<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 9">
<meta name=Originator content="Microsoft Word 9">
<link rel=File-List href="./chap13_files/filelist.xml">
<link rel=Edit-Time-Data href="./chap13_files/editdata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title>13 Type Checking as Proof</title>
<style>
<!--
 /* Font Definitions */
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Helvetica;
	panose-1:2 11 6 4 2 2 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Courier;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Geneva;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"Tms Rmn";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Helv;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"MS Serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"MS Sans Serif";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"New York";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:System;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:Mincho;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\660E\671D;
	mso-font-charset:128;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
	{font-family:Batang;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\BC14\D0D5;
	mso-font-charset:129;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 151388160 16 0 524288 0;}
@font-face
	{font-family:SimSun;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\5B8B\4F53;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:1 135135232 16 0 262144 0;}
@font-face
	{font-family:PMingLiU;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\65B0\7D30\660E\9AD4;
	mso-font-charset:136;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:1 134742016 16 0 1048576 0;}
@font-face
	{font-family:Gothic;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\FF7B\FF9E\FF7C\FF6F\FF78;
	mso-font-charset:128;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
	{font-family:Dotum;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\B3CB\C6C0;
	mso-font-charset:129;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 151388160 16 0 524288 0;}
@font-face
	{font-family:SimHei;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\9ED1\4F53;
	mso-font-charset:134;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 135135232 16 0 262144 0;}
@font-face
	{font-family:MingLiU;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\7D30\660E\9AD4;
	mso-font-charset:136;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 134742016 16 0 1048576 0;}
@font-face
	{font-family:"MS Mincho";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"\FF2D\FF33 \660E\671D";
	mso-font-charset:128;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
	{font-family:Gulim;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:\AD74\B9BC;
	mso-font-charset:129;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 151388160 16 0 524288 0;}
@font-face
	{font-family:"MS Gothic";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-alt:"\FF2D\FF33 \30B4\30B7\30C3\30AF";
	mso-font-charset:128;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:1 134676480 16 0 131072 0;}
@font-face
	{font-family:Century;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
@font-face
	{font-family:"Microsoft Sans Serif";
	panose-1:2 11 6 4 2 2 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:1627421663 -2147483648 8 0 66047 0;}
@font-face
	{font-family:BrushScrD;
	panose-1:3 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:-2147483473 30971 0 0 147 0;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:536871559 0 0 0 415 0;}
@font-face
	{font-family:"MS Reference Sans Serif";
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:536871559 0 0 0 415 0;}
@font-face
	{font-family:Desdemona;
	panose-1:4 2 5 5 2 14 3 4 5 4;
	mso-font-charset:0;
	mso-generic-font-family:decorative;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"MS Shell Dlg";
	panose-1:2 11 6 4 2 2 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:1627421663 -2147483648 8 0 66047 0;}
@font-face
	{font-family:Garamond;
	panose-1:2 2 4 4 3 3 1 1 8 3;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:Terminal;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:255;
	mso-generic-font-family:modern;
	mso-font-format:other;
	mso-font-pitch:fixed;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Marlett;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Lucida Console";
	panose-1:2 11 6 9 4 5 4 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:modern;
	mso-font-pitch:fixed;
	mso-font-signature:-2147482993 6144 0 0 31 0;}
@font-face
	{font-family:"Lucida Sans Unicode";
	panose-1:2 11 6 2 3 5 4 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-2147476737 14699 0 0 63 0;}
@font-face
	{font-family:"Arial Black";
	panose-1:2 11 10 4 2 1 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"Comic Sans MS";
	panose-1:3 15 7 2 3 3 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:Impact;
	panose-1:2 11 8 6 3 9 2 5 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:Georgia;
	panose-1:2 4 5 2 5 4 5 2 3 3;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"Franklin Gothic Medium";
	panose-1:2 11 6 3 2 1 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"Palatino Linotype";
	panose-1:2 4 5 2 5 5 5 3 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-536870009 1073741843 0 0 415 0;}
@font-face
	{font-family:"Trebuchet MS";
	panose-1:2 11 6 3 2 2 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:Webdings;
	panose-1:5 3 1 2 1 5 9 6 7 3;
	mso-font-charset:2;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Estrangelo Edessa";
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:-2147459005 0 128 0 1 0;}
@font-face
	{font-family:Gautami;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:2097155 0 0 0 1 0;}
@font-face
	{font-family:Latha;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:1048579 0 0 0 1 0;}
@font-face
	{font-family:Mangal;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:32771 0 0 0 1 0;}
@font-face
	{font-family:"MV Boli";
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Raavi;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131075 0 0 0 1 0;}
@font-face
	{font-family:Shruti;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:262147 0 0 0 1 0;}
@font-face
	{font-family:Tunga;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:4194307 0 0 0 1 0;}
@font-face
	{font-family:Sylfaen;
	panose-1:1 10 5 2 5 3 6 3 3 3;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:67110535 0 0 0 159 0;}
@font-face
	{font-family:NimbusSanT;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
@font-face
	{font-family:NimbusSanTCon;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
@font-face
	{font-family:NimbusRomNo9T;
	panose-1:1 1 1 3 1 1 1 1 1 1;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
@font-face
	{font-family:"Nimbus Script";
	panose-1:3 1 1 1 1 1 1 1 1 1;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:-2147483473 30971 0 0 147 0;}
@font-face
	{font-family:"Franklin Gothic Book";
	panose-1:2 11 5 3 2 1 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"MS Reference Serif";
	panose-1:2 4 5 2 5 4 5 2 3 3;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:536871559 0 0 0 415 0;}
@font-face
	{font-family:"MS Reference Specialty";
	panose-1:5 0 5 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Myriad Condensed Web";
	panose-1:2 11 5 6 3 4 3 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 147 0;}
@font-face
	{font-family:"Myriad Web";
	panose-1:2 11 5 3 3 4 3 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 147 0;}
@font-face
	{font-family:"Arial Narrow";
	panose-1:2 11 5 6 2 2 2 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"Book Antiqua";
	panose-1:2 4 6 2 5 3 5 3 3 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"Bookman Old Style";
	panose-1:2 5 6 4 5 5 5 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:"Century Gothic";
	panose-1:2 11 5 2 2 2 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
@font-face
	{font-family:Alba;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Alba Matter";
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Alba Super";
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Baby Kruffy";
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Chick;
	panose-1:0 0 9 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Croobie;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Fat;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Freshbot;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Frosty;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:GlooGun;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Jenkins v2\.0";
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Jokewood;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"Porky\0027s";
	panose-1:0 0 9 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Pussycat;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Weltron Urban";
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Kartika;
	panose-1:2 2 5 3 3 4 4 6 2 3;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:8388611 0 0 0 1 0;}
@font-face
	{font-family:Vrinda;
	panose-1:1 1 6 0 1 1 1 1 1 1;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:65539 0 0 0 1 0;}
@font-face
	{font-family:Poornut;
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"Jokerman LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"John Handy LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Orange LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Academy Engraved LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"University Roman LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Victorian LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Milano LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Smudger LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Westwood LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Ruach LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Rage Italic LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"La Bamba LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Quixley LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Pump Demi Bold LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Tiranti Solid LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Mekanik LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"One Stroke Script LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Highlight LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Odessa LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Scruff LET";
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:"Broadway BT";
	panose-1:4 4 9 5 8 11 2 2 5 2;
	mso-font-charset:0;
	mso-generic-font-family:decorative;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"Square721 BT";
	panose-1:2 11 5 4 2 2 2 6 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"ParkAvenue BT";
	panose-1:3 2 6 2 5 5 6 8 7 5;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"Staccato222 BT";
	panose-1:3 9 7 2 3 4 7 2 4 3;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"Cataneo BT";
	panose-1:3 2 8 2 4 5 2 6 8 4;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"Blackletter686 BT";
	panose-1:3 4 8 2 2 6 8 4 8 4;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"Calligraph421 BT";
	panose-1:3 6 7 2 5 4 2 2 2 4;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"MisterEarl BT";
	panose-1:3 8 8 2 2 3 2 2 2 3;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"OldDreadfulNo7 BT";
	panose-1:4 8 8 5 6 1 7 1 8 2;
	mso-font-charset:0;
	mso-generic-font-family:decorative;
	mso-font-pitch:variable;
	mso-font-signature:135 0 0 0 27 0;}
@font-face
	{font-family:"HolidayPi BT";
	panose-1:5 12 1 2 1 2 9 2 2 2;
	mso-font-charset:2;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Futhark AOE";
	panose-1:0 0 4 0 0 0 0 0 0 0;
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:131 0 0 0 9 0;}
@font-face
	{font-family:Modern;
	panose-1:0 0 0 0 0 0 0 0 0 0;
	mso-font-charset:255;
	mso-generic-font-family:auto;
	mso-font-format:other;
	mso-font-pitch:auto;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:"Signet Roundhand";
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
@font-face
	{font-family:"Brush Script MT";
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:NewSymbolFont;
	mso-font-alt:Symbol;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:CommonBullets;
	mso-font-alt:Symbol;
	mso-font-charset:2;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Wide Latin";
	mso-font-alt:"Times New Roman";
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:AbsolutDB;
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 0 0 0 1 0;}
@font-face
	{font-family:Traffic;
	mso-font-alt:"Courier New";
	mso-font-charset:0;
	mso-generic-font-family:decorative;
	mso-font-pitch:variable;
	mso-font-signature:7 0 0 0 19 0;}
 /* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:windowtext;}
h1
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:1;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-font-kerning:0pt;
	mso-ansi-language:EN-GB;
	font-weight:normal;
	text-decoration:underline;
	text-underline:single;}
h2
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:center;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:normal;
	font-style:italic;
	mso-bidi-font-style:normal;}
h3
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:3;
	font-size:14.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:normal;}
h4
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:4;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:bold;
	mso-bidi-font-weight:normal;
	text-decoration:underline;
	text-underline:single;}
h5
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:5;
	font-size:14.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:bold;
	mso-bidi-font-weight:normal;
	text-decoration:underline;
	text-underline:single;}
h6
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	text-indent:.5in;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:6;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:normal;
	font-style:italic;
	mso-bidi-font-style:normal;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:7;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-style:italic;
	mso-bidi-font-style:normal;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:8;
	font-size:14.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	text-decoration:underline;
	text-underline:single;}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
	{mso-style-next:Normal;
	margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:center;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:9;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;
	font-weight:bold;
	mso-bidi-font-weight:normal;}
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:11.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:22.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:33.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:44.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex5, li.MsoIndex5, div.MsoIndex5
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:55.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex6, li.MsoIndex6, div.MsoIndex6
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:66.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex7, li.MsoIndex7, div.MsoIndex7
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:77.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex8, li.MsoIndex8, div.MsoIndex8
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:88.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndex9, li.MsoIndex9, div.MsoIndex9
	{mso-style-update:auto;
	mso-style-next:Normal;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:99.0pt;
	margin-bottom:.0001pt;
	text-indent:-11.0pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 207.65pt right 415.3pt;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	tab-stops:center 207.65pt right 415.3pt;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading
	{mso-style-next:"Index 1";
	margin-top:12.0pt;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:0in;
	text-align:center;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:15.5pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	font-weight:bold;}
span.MsoFootnoteReference
	{vertical-align:super;}
span.MsoEndnoteReference
	{vertical-align:super;}
p.MsoEndnoteText, li.MsoEndnoteText, div.MsoEndnoteText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
	{margin:0in;
	margin-bottom:.0001pt;
	text-align:center;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:windowtext;
	font-weight:bold;
	mso-bidi-font-weight:normal;}
p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
	{margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:13.5pt;
	margin-bottom:.0001pt;
	text-align:justify;
	text-indent:.65pt;
	mso-pagination:widow-orphan;
	mso-layout-grid-align:none;
	text-autospace:none;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2
	{margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	border:none;
	mso-border-top-alt:solid windowtext 1.5pt;
	mso-border-bottom-alt:solid windowtext 1.5pt;
	padding:0in;
	mso-padding-alt:1.0pt 0in 1.0pt 0in;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3
	{margin:0in;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyTextIndent2, li.MsoBodyTextIndent2, div.MsoBodyTextIndent2
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:13.5pt;
	margin-bottom:.0001pt;
	text-align:justify;
	mso-pagination:widow-orphan;
	mso-layout-grid-align:none;
	text-autospace:none;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;
	mso-ansi-language:EN-GB;}
p.MsoBodyTextIndent3, li.MsoBodyTextIndent3, div.MsoBodyTextIndent3
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:9.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
p.MsoBlockText, li.MsoBlockText, div.MsoBlockText
	{margin-top:0in;
	margin-right:-.35pt;
	margin-bottom:0in;
	margin-left:3.5in;
	margin-bottom:.0001pt;
	text-align:justify;
	text-indent:-3.5in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-parent:"";
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
strong
	{mso-bidi-font-weight:normal;}
em
	{mso-bidi-font-style:normal;}
p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	background:navy;
	font-size:11.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:Tahoma;
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";
	color:black;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";
	color:windowtext;
	mso-ansi-language:EN-GB;}
p
	{margin-right:0in;
	mso-margin-top-alt:auto;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	color:black;}
span.Typewriter
	{mso-style-name:Typewriter;
	mso-style-parent:"";
	mso-ansi-font-size:10.0pt;
	mso-ascii-font-family:"Courier New";
	mso-hansi-font-family:"Courier New";}
span.l
	{mso-style-name:l;}
span.msoIns
	{mso-style-type:export-only;
	mso-style-name:"";
	text-decoration:underline;
	text-underline:single;
	color:teal;}
span.msoDel
	{mso-style-type:export-only;
	mso-style-name:"";
	text-decoration:line-through;
	color:red;}
span.msoChangeProp
	{mso-style-type:export-only;
	mso-style-name:"";
	color:black;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
 /* List Definitions */
@list l0
	{mso-list-id:1930387907;
	mso-list-type:hybrid;
	mso-list-template-ids:2123512462 -507747470 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
	{mso-level-start-at:6;
	mso-level-number-format:alpha-lower;
	mso-level-tab-stop:68.15pt;
	mso-level-number-position:left;
	margin-left:68.15pt;
	text-indent:-.25in;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]--><!--[if gte mso 9]><xml>
 <u1:shapedefaults u2:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u3:shapelayout u4:ext="edit">
  <u3:idmap u4:ext="edit" data="1"/>
 </u3:shapelayout>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u1:shapedefaults u2:ext="edit" spidmax="1027">
  <u1:colormenu u2:ext="edit" fillcolor="white" strokecolor="none"/>
 </u1:shapedefaults>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u3:shapelayout u4:ext="edit">
  <u3:idmap u4:ext="edit" data="1"/>
 </u3:shapelayout>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u1:DocumentProperties>
  <u1:Author> </u1:Author>
  <u1:Template>Normal</u1:Template>
  <u1:LastAuthor> </u1:LastAuthor>
  <u1:Revision>1</u1:Revision>
  <u1:TotalTime>0</u1:TotalTime>
  <u1:Created>2005-01-15T18:22:00Z</u1:Created>
  <u1:LastSaved>2005-01-15T18:22:00Z</u1:LastSaved>
  <u1:Pages>18</u1:Pages>
  <u1:Words>7176</u1:Words>
  <u1:Characters>40908</u1:Characters>
  <u1:Company> </u1:Company>
  <u1:Lines>340</u1:Lines>
  <u1:Paragraphs>81</u1:Paragraphs>
  <u1:CharactersWithSpaces>50237</u1:CharactersWithSpaces>
  <u1:Version>9.2720</u1:Version>
 </u1:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u2:WordDocument>
  <u2:DisplayHorizontalDrawingGridEvery>0</u2:DisplayHorizontalDrawingGridEvery>
  <u2:DisplayVerticalDrawingGridEvery>0</u2:DisplayVerticalDrawingGridEvery>
  <u2:UseMarginsForDrawingGridOrigin/>
  <u2:Compatibility>
   <u2:FootnoteLayoutLikeWW8/>
   <u2:ShapeLayoutLikeWW8/>
   <u2:AlignTablesRowByRow/>
   <u2:ForgetLastTabAlignment/>
   <u2:LayoutRawTableWidth/>
   <u2:LayoutTableRowsApart/>
  </u2:Compatibility>
 </u2:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u3:shapedefaults u4:ext="edit" spidmax="1032"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <u5:shapelayout u6:ext="edit">
  <u5:idmap u6:ext="edit" data="1"/>
 </u5:shapelayout>
</xml><![endif]-->
</head>

<body bgcolor=silver lang=EN-US link=blue vlink=purple style='tab-interval:
.5in'>

<div class=Section1>

<div align=center>

<table border=0 cellpadding=0 width="80%" bgcolor=white style='width:80.0%;
 mso-cellspacing:1.5pt;background:white;mso-padding-alt:75.0pt 75.0pt 75.0pt 75.0pt'>
 <tr>
  <td width="100%" style='width:100.0%;padding:75.0pt 75.0pt 75.0pt 75.0pt'>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <div align=center>
  <table border=0 cellspacing=0 cellpadding=0 width=432 style='width:4.5in;
   border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
   mso-padding-alt:0in 5.4pt 0in 5.4pt'>
   <tr>
    <td width=492 valign=top style='width:368.75pt;border:solid windowtext .5pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoTitle align=left style='text-align:left'><span
    style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
    font-weight:normal;mso-bidi-font-weight:bold'><a href="QiPrograms.zip">Download
    Programs</a> <o:p></o:p></span></p>
    </td>
    <td width=492 valign=top style='width:368.75pt;border:solid windowtext .5pt;
    border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoTitle align=left style='text-align:left'><span
    style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
    font-weight:normal;mso-bidi-font-weight:bold'><a href="contents.htm">Go to
    Contents Page</a><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  </div>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'>Note that this HTML page was
  generated from Word 2000.<span style="mso-spacerun: yes">&nbsp; </span>Some
  of the code cannot be pasted into Qi. You are advised to download the program
  files through the above link.<o:p></o:p></span></p>
  <p class=MsoTitle align=left style='margin-left:1.0in;text-align:left'><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  font-weight:normal;mso-bidi-font-weight:bold'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <div style='border-top:solid windowtext 1.5pt;border-left:none;border-bottom:
  solid windowtext 1.5pt;border-right:none;padding:1.0pt 0in 1.0pt 0in'>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-outline-level:1;border:none;mso-border-top-alt:solid windowtext 1.5pt;
  mso-border-bottom-alt:solid windowtext 1.5pt;padding:0in;mso-padding-alt:
  1.0pt 0in 1.0pt 0in'><b><span lang=EN-GB style='font-size:72.0pt;mso-bidi-font-size:
  10.0pt;font-family:Desdemona;mso-ansi-language:EN-GB'>13</span></b><b><span
  lang=EN-GB style='font-size:72.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> </span></b><b><sup><span lang=EN-GB style='font-size:48.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Type Checking as Proof<u7:p></u7:p></span></sup></b></p>
  </div>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-size:18.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><u><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>13.1 The Qi Type System____________________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>This chapter presents Qi&#8217;s
  type-checker as a proof procedure </span><span style='font-family:BrushScrD;
  mso-bidi-font-style:italic'>T </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>for proving the types of expressions in </span><span style='font-family:
  BrushScrD;mso-bidi-font-style:italic'>L</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>. We begin at the top level</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>top level</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>of the type-checker, which is a loop used to load</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>load</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>and typecheck a Qi source file F.<span style="mso-spacerun:
  yes">&nbsp; </span>The top level is very simple; Qi compile</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>compile</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>s the expressions of F into a list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span><i>l </i>of </span><span style='font-family:BrushScrD;
  mso-bidi-font-style:italic'>L</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>
  expressions.<span style="mso-spacerun: yes">&nbsp; </span>Qi then cycles
  through the elements of </span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>l</span></i><i><span
  style='font-family:BrushScrD'>,</span></i><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> type checking each element <i>e</i> by a type checking procedure </span><span
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>T<i> </i></span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>which attempts to prove that <i>e</i>
  is well-typed. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The application of </span><span
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>T </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>to <i>e </i>will give rise to one
  of three cases.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;tab-stops:.25in'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span style='font-family:BrushScrD;mso-bidi-font-style:italic'>T </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>may terminate, having failed to
  prove that <i>e</i> is well typed.<a style='mso-footnote-id:ftn1'
  href="#_ftn1" name="_ftnref1" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[1]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[1][1][1]<u7:p></u7:p></span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;tab-stops:.25in'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>2.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span style='font-family:BrushScrD;mso-bidi-font-style:italic'>T<i> </i></span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>may terminate, having proved that <i>e</i>
  has a type.<span style="mso-spacerun: yes">&nbsp; </span>This result will be
  added to the type environment</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>environment</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>and <i>e</i> will be compile</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>compile</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>d into the Qi image and taken out
  of <i>l</i>. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;tab-stops:.25in'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>3.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span style='font-family:BrushScrD;mso-bidi-font-style:italic'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> may fail to terminate.<a
  style='mso-footnote-id:ftn2' href="#_ftn2" name="_ftnref2" title=""><span
  class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[2]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[2][2][2]</span> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;tab-stops:.25in'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>At the end of a successful load</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>load</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>, <i>l</i> will be reduced to the
  empty list</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>.<span style="mso-spacerun:
  yes">&nbsp; </span>If the load is unsuccessful, either the load will not
  terminate, or it will terminate and <i>l </i>will not be empty.<span
  style="mso-spacerun: yes">&nbsp; </span>In the last case, Qi will print error
  message</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>error message</span></b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>s detailing where the proofs
  failed. To define </span><span style='font-family:BrushScrD;mso-bidi-font-style:
  italic'>T</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>, we need to
  state what rules are employed by </span><span style='font-family:BrushScrD;
  mso-bidi-font-style:italic'>T </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>and what proof procedure </span><span style='font-family:BrushScrD;
  mso-bidi-font-style:italic'>T<i> </i></span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>uses. We shall explore the Qi type system by
  examining the rules that </span><span style='font-family:BrushScrD;
  mso-bidi-font-style:italic'>T</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> uses.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><u><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>13.2 Type Checking Applications_____________</span></u></b><b><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoBodyText style='margin-left:.5in;mso-outline-level:1'><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Our first set of rules (figure 13.1)
  enables applications to be typechecked.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h2 align=left style='margin-left:.5in;text-align:left;text-indent:.25in'><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Sequents</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";font-style:normal'>Sequents</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>Application<span
  style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  Primitive <u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-left:.5in;mso-layout-grid-align:none;
  text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>____________<span style='mso-tab-count:
  2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  <u><span style='mso-bidi-font-style:italic'>F : (A </span></u></span><u><span
  style='font-family:Symbol;mso-bidi-font-style:italic'>�</span></u><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-bidi-font-style:italic'> B); X : A<i>;</i></span></u><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  if <span style='mso-bidi-font-style:italic'>X</span> is base and </span></u><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A</span></u><u><span
  style='font-family:Symbol'> </span></u><u><span style='mso-bidi-font-size:
  12.0pt;font-family:Symbol'>�</span></u><u><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span></u><u><span
  style='font-family:Symbol'>t</span></u><u><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(<span style='mso-bidi-font-style:
  italic'>X</span>)</span></u><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'> </span><u7:p></u7:p></span></i></p>
  <h2 align=left style='margin-left:.5in;text-align:left'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";font-style:normal'>X : A &gt;&gt; X : A;</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";font-style:normal'>(F X) : B;<span
  style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  X : A;<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB> </span></h2>
  <h2 style='margin-left:.5in'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Figure
  13.1 The rules for typechecking applications<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  </span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>is obvious. The </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Rule of Application</span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of
  Application</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>states that an application (F X) has
  the type B provided F has the type A </span><span style='font-family:Symbol'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  B for some A and X has the type A. The </span><i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Primitive Rule</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> assumes that
  there is a function </span><span style='font-family:Symbol'>t</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  from the set of all base expressions of Qi (i.e. numbers, symbols, function
  symbols and the rest) into the powerset of all types such that A </span><span
  style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><span
  style='font-size:12.0pt;font-family:Symbol'> </span><span style='font-family:
  Symbol'>t</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(<i>e</i>) when A is a type of <i>e</i>; thus </span><span
  style='font-family:Symbol'>t</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(1) = {number}, </span><span
  style='font-family:Symbol'>t</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(&#8220;1&#8221;) = {string}, </span><span
  style='font-family:Symbol'>t</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>(+) = {number </span><span
  style='font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> (number </span><span
  style='font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> number), symbol}. The </span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Primitive Rule</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  states that given a typing <i>e</i> : A to prove, we may prove it if <i>e</i>
  is a base object where A </span><span style='mso-bidi-font-size:12.0pt;
  font-family:Symbol'>�</span><span style='font-family:Symbol'> t</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>((<i>e</i></span><span
  style='font-family:Symbol'>). <span style="mso-spacerun: yes">&nbsp;</span><span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>From
  these rules, we can establish the types of applications.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Here is an e example; the goal</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>goal</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>is to prove that (* 1 0) : number. To
  adopt the curried form required by the <i>Rule of Application</i> we write (*
  1 0) as ((* 1) 0). <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-ansi-language:EN-GB'>Proof:</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-ansi-language:EN-GB'>
  by the <i>Rule of Application</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></i><i><span
  style='font-family:"Microsoft Sans Serif"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'>Rule of Application</span></i><i><span
  style='font-family:"Microsoft Sans Serif"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>((* 1) 0) : number is proved if there
  is a type A such that (* 1) : A � number and 0 : A.<span style="mso-spacerun:
  yes">&nbsp; </span>Let A be the type number.<span style="mso-spacerun:
  yes">&nbsp; </span>Then we need to prove (* 1) : number � number and 0 : number.<span
  style="mso-spacerun: yes">&nbsp; </span>0 : number follows by the <i>Primitive
  Rule</i>.</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-ansi-language:EN-GB'><span style='mso-element:
  field-begin'></span></span><span style='font-family:"Microsoft Sans Serif"'>
  XE &quot;</span><i style='mso-bidi-font-style:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-ansi-language:EN-GB'>Primitive
  Rule</span></i><span style='font-family:"Microsoft Sans Serif"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp;</span>By the <i>Rule of Application</i>
  (* 1) : number if there is some type B such that * : B � (number � number)
  and 1 : B.<span style="mso-spacerun: yes">&nbsp; </span>Let B be the type
  number;<span style="mso-spacerun: yes">&nbsp; </span>* : number � (number �
  number) and 1 : number are proved by the <i>Primitive Rule.</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></i><i><span
  style='font-family:"Microsoft Sans Serif"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'>Primitive Rule</span></i><i><span style='font-family:
  "Microsoft Sans Serif"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-ansi-language:EN-GB'><span style='mso-bidi-font-style:italic'><span
  style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p><u5:p></u5:p></span></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><u><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>13.3 Choosing Values by Unification__________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The preceding proof could be
  easily mechanised on a computer except for the problem of choosing values for
  variables. Consider the case in the preceding proof where it was necessary to
  decide a value</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>value</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>for &#8216;B&#8217; such that &#8216;* : B </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> (number </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number)&#8217; was solvable. The <i>Primitive Rule</i> can show that * :
  number </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> (number </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> number). The problem is to match
  &#8216;* : number </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> (number </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> number)&#8217; to the conclusion
  &#8216;*<span style="mso-spacerun: yes">&nbsp; </span>:<span style="mso-spacerun:
  yes">&nbsp; </span>B </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> (number </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> number)&#8217;. These two typings match
  complete</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>complete</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>ly except where<span
  style="mso-spacerun: yes">&nbsp; </span>&#8216;B&#8217; is matched to &#8216;number&#8217;. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>In order to agree that the two
  typings match, an extended notion of &#8220;match&#8221; must be used and <b>unification</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>unification</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>provides this notion.<span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span>Two expressions <b>unify</b> when there is a uniform
  substitution for the variables in each expression that makes the two
  expressions the same. &#8216;B&#8217; unifies with &#8216;number&#8217; because the association B </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number makes the two identical.<span style="mso-spacerun: yes">&nbsp;
  </span>A set of associations that unifies two expressions X and Y is a <b>unifier</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>unifier</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>of X
  and Y.<span style="mso-spacerun: yes">&nbsp; </span>In the case of &#8216;B&#8217; and
  &#8216;number&#8217;, the unifier is the single substitution of &#8216;number&#8217; for &#8216;B&#8217;.
  &#8216;number&#8217; is said to be the <b>value</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>value</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>of &#8216;B&#8217;
  under this unification. The elements of a unifier are called <b>bindings</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>bindings</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, and process of substituting the variables in an
  expression by their values under a unifier is called <b>dereferencing</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>dereferencing</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>.<span style="mso-spacerun: yes">&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>For example, under the association
  A </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> boolean</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>boolean</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>, the expression &#8216;(list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(list A))&#8217; dereferences to &#8216;(list (list boolean))&#8217;.<span
  style="mso-spacerun: yes">&nbsp; </span>Under the associations {A </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> (list B), B </span><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> number} the
  expression &#8216;(list (list A))&#8217; dereferences to &#8216;(list (list (list
  number)))&#8217;.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Conventionally
  if </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> is a unifier</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unifier</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>of two expressions then the result of dereferencing</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>dereferencing</span></b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>an expression <i>E</i> by </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> is written </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>(<i>E</i>). The <b>most general unifier</b> or <b>MGU</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>MGU</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span></span></span></b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>of two expressions
  is the <i>smallest</i> unifier needed to unify the two.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>For example, A </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> B unifies with number </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> B via the unifier {A </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number, B </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> number}. However this is not the
  MGU of the two expressions which is {A </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>number}. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Unification is used within type
  checking to perform the needed substitutions.<span style="mso-spacerun:
  yes">&nbsp; </span>The typings * : B </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> (number </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number) and * : number </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> (number </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> number) are
  unified to find their MGU</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>MGU</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span></span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>s</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> and the
  instantiation is given by </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>s</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(B). Here </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(B) = number.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Finding the MGU</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>MGU</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>of two expressions is a decidable</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>decidable</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>problem and the most commonly used method for finding it
  was suggested by Robinson</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Robinson</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(1965).<span style="mso-spacerun: yes">&nbsp;
  </span>Robinson&#8217;s algorithm can be specified in a set of recursive</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>recursive</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>equations</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>equations</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>for a function <i>mgu</i> that returns </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>^</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> if its inputs do not unify and a
  set of bindings</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>bindings</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>otherwise.<span style="mso-spacerun: yes">&nbsp; </span>The
  encoding in Qi is quite straightforward.<a style='mso-footnote-id:ftn3'
  href="#_ftn3" name="_ftnref3" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[3]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[3][3][3]<u7:p></u7:p></span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1. <i><span style="mso-spacerun:
  yes">&nbsp;</span>mgu</i>(x, y) = <i>mgu'</i>(x, y, {})<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>2.<span style="mso-spacerun:
  yes">&nbsp; </span><i>mgu'</i>(x, x, </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>) = </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>s<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>3.<span style="mso-spacerun:
  yes">&nbsp; </span><i>mgu'</i>(x, y, </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>) = {x </span><span lang=EN-GB style='font-size:
  8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> y} </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> if x is a variable and x does not
  occur in y<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>4.<span style="mso-spacerun:
  yes">&nbsp; </span><i>mgu'</i>(x, y, </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>) = {y </span><span lang=EN-GB style='font-size:
  8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> x} </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> if y is a variable and y does not
  occur in x<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>5.<span style="mso-spacerun:
  yes">&nbsp; </span><i>mgu'</i>((x<sub>1</sub>,..x<sub>n</sub>), (y<sub>1</sub>,..y<sub>n</sub>),</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) = </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>^</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> if <i>mgu'</i>(x<sub>1</sub>, y<sub>1</sub>,</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) = </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>^<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:2.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>= <i>mgu' </i>(<i>deref</i>((x<sub>2</sub>,...,x<sub>n</sub>),
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&#8217;</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>), <i>deref</i>((y<sub>2</sub>,..,.y<sub>n</sub>), </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&#8217;</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>) ,</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>s</span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&#8217;</span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>)<span style="mso-spacerun:
  yes">&nbsp; </span>otherwise, where </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>s</span><i><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>&#8217;</span></i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> = <i>mgu'</i>(x<sub>1</sub>,y<sub>1</sub>,</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>6. <i>mgu'</i>(x, y,</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) = </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>^</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> in all cases not covered by 2-5.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>7. <i>deref</i>(x,</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) = <i>deref</i>(y, </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) if x </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> y </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>8. <i>deref</i>((x<sub>1</sub>,&#8230;,x<sub>n</sub>),
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) = ((<i>deref</i>(x<sub>1</sub>, </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>)),..., <i>deref</i>(x<sub>n</sub>,
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>))<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>9. <i>deref</i>(x, </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>s</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>) = x in all cases not covered by 7
  or 8.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h2 style='margin-left:.5in'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Figure
  13.2 Computing the MGU</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE &quot;<b
  style='mso-bidi-font-weight:normal'>MGU</b>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>by a Set of Recursive Equations<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Figure 13.2 gives some specimen
  inputs to the unification</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unification</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>function and the outputs. Notice that in case 6 the
  unification fails since a variable cannot be associated with an expression
  containing that variable (this is called an <b>occurs-check</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>occurs-check</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>failure</span></span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>failure</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>). <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -.5in'><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Expression 1<span
  style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  Expression 2<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span>
  MGU</span></u><!--[if supportFields]><u><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></u><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></u><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>MGU</span></u><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></u><![endif]--><!--[if supportFields]><u><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></u><![endif]--><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></u></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>a<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  a<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  {}<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>X<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  b<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  {X<span style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>b}<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>Y<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  X<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  {X<span style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>Y} or {Y<span
  style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>X}<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(f Y)<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  X<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  {X<span style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>(f Y)}<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>a<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  b<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> ^<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>X<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  (f X)<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> ^<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(f (f X Y) Y)<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  (f (f a b) b)<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  {X<span style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>a, Y<span style="mso-spacerun: yes">&nbsp; </span></span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>b}<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>In Qi, all the rules of its type
  system (including those entered by the user) are interpreted <i>modulo</i>
  unification</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unification</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>with respect to types.<span style="mso-spacerun:
  yes">&nbsp; </span>We shall adopt this approach in all the subsequent</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>proofs in this chapter.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><u><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>13.4 Type Checking Abstractions_____________</span></u></b><b><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The <i>Rule of Abstraction</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of
  Abstraction</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>says
  that, where X is a variable, (</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>V X) has the type A </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> B if, where
  c is arbitrary object of type A,<span style="mso-spacerun: yes">&nbsp;
  </span>[X]<sub>c/V</sub> (the result of replacing all free</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>free</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>occurrences of V by c throughout X) is of the type B
  (figure 13.3).<u7:p></u7:p></span></p>
  <p class=MsoHeading7 align=center style='margin-left:.5in;text-align:center'><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoHeading7 align=center style='margin-left:.5in;text-align:center'><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Abstraction<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  tab-stops:205.55pt'><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>where </span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>c<i> is arbitrary<u7:p></u7:p></i></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  tab-stops:205.55pt'><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>c : A
  &gt;&gt; [X]<sub>c/V</sub> : B;<u7:p></u7:p></span></u></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  tab-stops:205.55pt'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>V X) : (A </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> B);</span><u6:p></u6:p><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><u7:p></u7:p><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span></span></p>
  <h2 style='margin-left:.5in'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Figure
  13.3 The rule for typechecking abstractions<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The meaning of &#8220;arbitrary&#8221; is a
  little subtle. In conventional usage to select something arbitrarily is to
  select it at random</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>random</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>. This is not the sense of &#8220;arbitrary&#8221;
  needed here. For instance, one could &#8220;prove&#8221; that all numbers are odd by
  arbitrarily selecting 3 and stating that since 3 is odd and selected
  arbitrarily, all numbers are odd.<span style="mso-spacerun: yes">&nbsp;
  </span>This is obviously wrong.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The problem then arises of how we
  show that our choice of object is genuinely arbitrary, or arbitrary in sense
  that allows us to claim that the object chosen stands proxy for all
  cases.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>The philosopher&#8217;s
  answer is that the object chosen must have no special conditions attached to
  it. This is correct, but changes the problem into - how are we supposed to
  recognise that no special assumptions are attached? The logician supplies a
  syntactic criterion; the object supplied should be given a unique name, which
  does not occur anywhere else in the proof; such a name is <b>fresh</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>.<span style="mso-spacerun: yes">&nbsp;&nbsp;
  </span>This shows up immediately what is wrong with the &#8216;proof&#8217; that all
  numbers are odd. We begin with the sequent</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>odd(3) &gt;&gt; </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>x odd(x)<span style="mso-spacerun:
  yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>We select our so-called arbitrary
  case, 3.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>odd(3) &gt;&gt; odd(3)<span
  style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>However, here the proof fails,
  since &#8220;3&#8221; is not a fresh</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>symbol and so is not arbitrary in the required sense.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Here is a proof of (</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>x ((* 3) x)) : (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>number) </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> (list
  number), demonstrating the use of the <i>Abstraction</i> and <i>Sequents</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'>s <u7:p></u7:p></span></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Proof:</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp; </span>by the
  <i>Abstraction Rule</i>, (</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x ((* 3) x))
  : (list</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>number) </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> (list
  number) is provable if <i>a</i> : number &gt;&gt; ((* 3) <i>a</i>) : number
  is provable (<i>a</i> is our fresh</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>symbol).<span style="mso-spacerun: yes">&nbsp; </span>By
  the <i>Rule of Application</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of
  Application</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, <i>a</i> : number &gt;&gt; ((* 3) <i>a</i>) :
  number is provable if both <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : number &gt;&gt; (* 3) : A </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>number <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : number &gt;&gt; <i>a</i> : A <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>are provable for some type A. The
  second sequent</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>is solved using the <i>Sequents</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>with
  unifier</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unifier</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>{A </span><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>
  number}.<span style="mso-spacerun: yes">&nbsp; </span>The first sequent now
  becomes<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : number &gt;&gt; (* 3) : number </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>number. <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>By the <i>Rule of Application</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i style='mso-bidi-font-style:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></i><i style='mso-bidi-font-style:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Rule of Application</span></i><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>again,
  this splits into two subproblems<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>number) &gt;&gt; * : (B </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>(number
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>number).<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>number) &gt;&gt; 3 : B<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Both these problems are solved by
  the <i>Primitive Rule</i> using the unifier</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unifier</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span><br clear=all>
  {B </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> number}.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>There is one
  extra wrinkle to using unification</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'> XE &quot;</span><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>unification</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>in type checking, which is worth mentioning here, and it is
  called <b>standardising apart</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'> XE &quot;</span></b><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>standardising apart</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; \b </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Consider the problem of showing
  (</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;
  mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>x x) has a type; this can be rephrased as &#8220;Find the (most general)
  value</span><!--[if supportFields]><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'> XE &quot;</span><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>value</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>for A such that (</span><span lang=EN-GB style='font-family:
  Symbol;letter-spacing:-.1pt;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>x x) :
  A.&#8221;<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>However if we try to
  unify (</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;
  mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>x x) : A with the conclusion (</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>V X) : (A </span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> B) of the Abstraction Rule then an occurs-check</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'> XE &quot;</span><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>occurs-check</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>failure</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'> XE &quot;</span><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>failure</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>arises (A cannot be unified with (A </span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> B)).<span style="mso-spacerun: yes">&nbsp; </span>The problem arises
  from the accidental use of A in both rule and goal</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'> XE &quot;</span><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>goal</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'>.<span style="mso-spacerun:
  yes">&nbsp; </span>To avoid this, we uniformly rename or standardise apart
  the variables of any rule before applying it, so that all variables in the
  rule are fresh</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'> XE &quot;</span><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'>.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h5 style='margin-left:.5in'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>13.5 Polymorphic
  Functions_________________<u7:p></u7:p></span></h5>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>When we say
  that the polymorphic</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'> XE &quot;</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.1pt;mso-ansi-language:EN-GB'>polymorphic</span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.1pt'>&quot; </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>function (</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'>x x) has the
  type A </span><span lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> A, this is a shorthand for asserting that for <i>all</i> values of A,
  (</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;
  mso-ansi-language:EN-GB'>l</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> x x) inhabits A </span><span lang=EN-GB style='font-family:Symbol;
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'> A, or in logical notation (</span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>&quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>A (A </span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.1pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.1pt;mso-ansi-language:EN-GB'> A)). The <i>Rule of Generalisation</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt'> XE &quot;</span></i><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>Rule of Generalisation</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>enables proofs of the types of </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.2pt;mso-ansi-language:EN-GB'>polymorphic
  functions. To prove that</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> X : (</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.1pt;mso-ansi-language:EN-GB'>&quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'>A B), we must prove that, where
  C is any arbitrary type, X : B<sub>C/A</sub> (where B<sub>C/A</sub> is the
  result of substituting all occurrences of A by C). The concept of arbitrary
  is defined in the same way as previously - by the introduction of a fresh</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'> XE &quot;</span><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.1pt;mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>symbol.<span style="mso-spacerun: yes">&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h6 style='margin-left:1.0in;text-indent:0in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Generalisation<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  Specialisation<span style='mso-tab-count:1'>&nbsp;&nbsp; </span><u7:p></u7:p></span></h6>
  <h6 style='margin-left:.5in'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></h6>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>where </span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>C<i> is fresh</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><b
  style='mso-bidi-font-weight:normal'><i><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>fresh</span></i></b><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style='mso-tab-count:1'> </span></span></span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><u>X
  : B<sub>C/A</sub>, X : (</u></span><u><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>&quot;</span></u><u><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>A B)<span style="mso-spacerun: yes">&nbsp;
  </span>&gt;&gt; P;<span style='mso-tab-count:1'> </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u5:p></u5:p></span></u><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X : B<sub>C/A;<span
  style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></sub><u7:p></u7:p></span></u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> X : (</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A B)<span style="mso-spacerun:
  yes">&nbsp; </span>&gt;&gt; P;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X : (</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A B);<sub><span style='mso-tab-count:
  3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u6:p></u6:p></sub></span><sub><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></sub><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><u7:p></u7:p><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h2 style='margin-left:.5in'><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>Figure 13.4
  The rules for typechecking with polytypes<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p><span
  style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;</span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Here is a proof that (</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>x x) : (</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A (A </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> A)). <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Proof:</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> Applying the <i>Rule of Generalisation</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of
  Generalisation</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>to the
  problem derives (</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x x) : <i>a</i>
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <i>a</i>, (<i>a</i> is our fresh</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>symbol). Applying the <i>Rule of Abstraction</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of Abstraction</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>to (</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>x x) : <i>a</i> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <i>a</i> derives <i>b</i> : <i>a</i>
  &gt;&gt; <i>b</i> : <i>a</i> (<i>b</i> is our fresh symbol) which is solved
  by the <i>Sequents</i></span><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'>.<u7:p></u7:p></span></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The Rule of Specialisation</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><i style='mso-bidi-font-style:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Rule of Specialisation</span></i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>is obvious; if we have shown that X : (</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A B), then we can conclude that X
  : B<i><sub>C</sub></i><sub>/A</sub> for any type C we care to choose. Here is
  a proof of that [ ] : (</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>&quot;A</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> (list</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>A)), remove : (</span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>&quot;A</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> (A </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>� </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>((list A) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list A))) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>&gt;&gt;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> ((remove 1) [ ]) : (list number).<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Proof:</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp; </span>By the
  <i>Rule of Specialisation</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of
  Specialisation</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>applied
  twice, we derive<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[ ] : </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;A</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>A), [ ] : (list number), <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>remove : (number </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>((list number) </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list number))), <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>remove : </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A(A </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>((list A) </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> (list A))) </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>&gt;&gt;</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> ((remove 1) [ ]) : (list number). <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.2pt;mso-ansi-language:EN-GB'>Let </span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'>D </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'>to be the assumptions in this sequent. We have to </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>prove</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'> D &gt;&gt; </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>((remove 1) [ ]) : (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>number).<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>By the <i>Rule of Application</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Rule of
  Application</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'>s</span></span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> we have 2 sequent</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>s to prove; </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(remove 1) : (B </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>� </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(list number)) and [ ] : B.<span
  style="mso-spacerun: yes">&nbsp; </span>Applying the <i>Rule of</i> <i>Applications</i>
  to the first sequent we derive a total of three sequents; <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D
  &gt;&gt; </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>remove</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> : </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(C</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'> � </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(B </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>� (</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list number))) <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>2.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D
  &gt;&gt; </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>1 : C. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>3.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D
  &gt;&gt;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> [ ] : B <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The first is solved by unification</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unification</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>using the <i>Sequents</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>({C </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number, B </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list number}).<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>The second (1 : C, with C </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number) is solved by <i>Primitive</i> and [ ] : B is solved by the <i>Sequents
  Rule </i>with B </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list number)<i>. </i>In the
  implementation of Qi, the <i>Specialisation Rule</i> is not used, since its
  purpose is only to allow us to specialise the </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>-bound</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>bound</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>symbols.<span style="mso-spacerun: yes">&nbsp;&nbsp;
  </span>Instead, unification</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>unification</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>is built into the system so that the appropriate
  specialisation is made automatically. <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Finally,
  the error objects</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;error objects&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span></span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB;layout-grid-mode:line'>^ </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>and
  </span><b><span style='font-family:Symbol'>� </span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>have
  the polymorphic type (</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB;layout-grid-mode:line'>&quot;</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A A).</span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> <span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>______________<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  ________________<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB;layout-grid-mode:
  line'>^ : </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB;layout-grid-mode:line'>&quot;</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A A)<span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>
  <b><span style='font-family:Symbol'>� </span></b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>: (</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB;layout-grid-mode:
  line'>&quot;</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A A)<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-outline-level:1'><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Figure 13.5 The rules for error
  objects</span></i><!--[if supportFields]><i style='mso-bidi-font-style:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-style:italic'>
  XE &quot;error objects&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><b><u><span
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><u><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>13.6 Typing Special Forms___________________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Certain expressions of Qi are
  special forms</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>special forms</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>- they cannot be curried and they have their own typing
  rules.<a style='mso-footnote-id:ftn4' href="#_ftn4" name="_ftnref4" title=""><span
  class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[4]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[4][4][4]<u7:p></u7:p></span></span></p>
  <p class=MsoHeading7 style='margin-left:1.0in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";font-style:normal;mso-bidi-font-style:italic'>&nbsp;<u5:p></u5:p></span></p>
  <p class=MsoHeading7 style='margin-left:1.0in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Cons Rule</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE
  &quot;Cons Rule&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>(left)<span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  Cons Rule (right)<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><u><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>X : A, Y :
  (list</span></u><!--[if supportFields]><u><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;list&quot; </span></u><![endif]--><!--[if supportFields]><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></u><![endif]--><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>A) &gt;&gt; P;</span></u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><u>X : A; Y : (list A);<u7:p></u7:p><u5:p></u5:p></u></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>cons</b> X Y) : (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>list</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>A) &gt;&gt; P;</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span><i><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></i></span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>cons</b> X Y) : (list A)<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoHeading7 style='margin-left:1.0in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>@p Rule</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE
  &quot;Cons Rule&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>(left)<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  @p Rule (right)<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-left:1.0in'><u><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>X : A, Y : B
  &gt;&gt; P;</span></u><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><u>X : A; Y : B;<u5:p></u5:p></u></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>@p</b> X Y) : (A * B) &gt;&gt;
  P;<span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  (<b>@p </b>X Y) : (A * B)<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Equality Rule</span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Equality Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>Conditional Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE
  &quot;Conditional Rule&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X : A; Y : A;<span
  style='mso-tab-count:4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
  X : boolean</span></u><!--[if supportFields]><u><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></u><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></u><b style='mso-bidi-font-weight:normal'><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></u></b><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></u><![endif]--><!--[if supportFields]><u><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></u><![endif]--><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>; Y : A; Z : A;<u7:p></u7:p></span></u></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>=</b> X Y) : boolean</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>boolean</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>(<b>if</b>
  X Y Z) : A;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Local Rule<u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>where </span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>c<i> is fresh</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Let Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-pagination:widow-orphan lines-together'><u><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Y : B;<span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>c : B &gt;&gt; [Z]<sub>c/X</sub> : A;<u7:p></u7:p></span></u></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-pagination:widow-orphan lines-together'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>(<b>let</b> X Y Z) : A;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-pagination:widow-orphan lines-together'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h2 style='margin-left:.5in'><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>Figure 13.6
  The rules for special forms<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Here is a proof that (let X 6 (if
  (= X 5) 0 1)) : number.<span style="mso-spacerun: yes">&nbsp; </span>By the <i>Local
  Rule</i></span><!--[if supportFields]><i style='mso-bidi-font-style:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></i><i style='mso-bidi-font-style:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Let Rule</span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, (let X 6 (if (= X 5) 0 1)) : number if both 6 : A
  and <i>x</i> : A &gt;&gt; (if (= <i>x</i> 5) 0 1) : number.<span
  style="mso-spacerun: yes">&nbsp; </span>The first problem</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>is solved by the <i>Primitive Rule</i> with A </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number.<span style="mso-spacerun: yes">&nbsp; </span>The second
  problem dereferences to <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>x</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : number &gt;&gt; (if (= <i>x</i> 5) 0 1) : number<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>By the <i>Conditional Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE
  &quot;Conditional Rule&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, this problem is solvable if the following are
  solvable.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x</span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : number &gt;&gt; (= <i>x</i> 5)
  : boolean</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>boolean</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>; <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>2.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x</span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : number &gt;&gt; 0 : number <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>3.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x</span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : number &gt;&gt; 1 : number <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>2. and 3. are solvable by the <i>Primitive
  Rule </i>and 1. decomposes by the <i>Equality Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-style:italic'>
  </span></span></i><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Equality Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>to<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>4.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x</span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : number &gt;&gt; <i>x</i> : B <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>5.</span><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x</span></i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : number &gt;&gt; 5 : B <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>4. is solved by the <i>Sequents</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>with B </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>|</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number and 5. by the <i>Primitive Rule</i>.</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><i style='mso-bidi-font-style:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Primitive Rule</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><u6:p></u6:p><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><u7:p></u7:p><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><u><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>13.7<span style="mso-spacerun: yes">&nbsp;
  </span>Internal Forms________________________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The rules in this section deal with constructions that are
  generated from Qi definitions.<span style="mso-spacerun: yes">&nbsp;
  </span>They are referred to as <b>internal forms</b>. Internal forms are
  expressions that are generated internally through the Qi compiler and are
  compiled out by the procedures of the previous chapter before the Lisp object
  code is generated.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>The
  first such rule deals with the </span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand"'>Y</span></i></b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>combinator</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>combinator</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-outline-level:1'><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Combinator
  Rule</span></i><!--[if supportFields]><i style='mso-bidi-font-style:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></i><i style='mso-bidi-font-style:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Combinator Rule</span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>where </span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>c<i> is fresh</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><b
  style='mso-bidi-font-weight:normal'><i><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>fresh</span></i></b><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>c : A &gt;&gt; [Y ]<sub>c/X</sub>
  : A<u7:p></u7:p></span></u></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span>(</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> X Y)) : A<u7:p></u7:p></span></p>
  <h2 style='margin-left:.5in'><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>&nbsp;<u7:p></u7:p></span></h2>
  <h2 style='margin-left:.5in'><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>Figure 13.7
  The rule for typechecking recursive functions<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>In chapter 12 we saw that that the
  combinator</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>combinator</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span></span><b><i><span lang=EN-GB style='font-family:"Signet Roundhand";
  mso-ansi-language:EN-GB'>Y</span></i></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> could be used to define recursive</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>recursive</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>functions.<span style="mso-spacerun: yes">&nbsp;&nbsp;
  </span>The combinator rule allows us to typecheck the types of such
  functions.<span style="mso-spacerun: yes">&nbsp; </span>For example we define
  factorial</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>factorial</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>as (</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> x (if (= x
  0) 1) ((* x) (factorial ((- x) 1))))).<span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span>Using the </span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span>combinator this becomes (</span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span>(</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> y (</span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>x (if (= x 0) 1 ((* x) (y ((- x)
  1))))))).<span style="mso-spacerun: yes">&nbsp; </span>We prove that this
  expression has the type number </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p>&nbsp;<u7:p></u7:p>Proof
  Sketch:</span></b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <span
  style='letter-spacing:-.1pt'>(</span></span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>Y</span></i></b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'><span style="mso-spacerun: yes">&nbsp; </span>(</span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'>l</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> y (</span><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.1pt;mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.1pt;mso-ansi-language:EN-GB'>x (if (= x 0) 1 ((* x) (y ((- x) 1))))))) :
  number </span><span lang=EN-GB style='font-family:Symbol;letter-spacing:-.1pt;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt;mso-ansi-language:
  EN-GB'> number. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>By the <i>Combinator Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Combinator
  Rule</span></i><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&quot; </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, this is provable if the following sequent</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>is provable<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>f</span></i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : number </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> number &gt;&gt; (</span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>x (if (= x 0)
  1 ((* x) (<i>f</i> ((- x) 1))))) : number </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> number.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The reader can complete</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>complete</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>the proof. <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The next two rules deal with case
  statements and guards.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoHeading7 style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Cases Rule</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE
  &quot;Cases Rule&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>For each <i>i</i>, 1 </span><span
  lang=EN-GB style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> <i>i</i> </span><span lang=EN-GB style='font-size:12.0pt;mso-bidi-font-size:
  10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> <i>n<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></i></span><i><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Case</span></u><i><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>i</span></sub></i><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : A;<span style='mso-tab-count:
  2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span></u><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>cases</b> Case<sub>1</sub> &#8230;
  Case<i><sub>n</sub></i>) : A<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Guard
  Rule<u7:p></u7:p></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Guard : boolean</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>boolean</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>; <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Guard : verified &gt;&gt; X : A;<u7:p></u7:p></span></u></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>where</b> Guard X) : A<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <h2 style='margin-left:.5in'><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>Figure 13.8
  The rules for typechecking cases and guards<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The first rule says that the body of a function definition
  (consisting of a series of cases) has the type A if every case in the body of
  the function has the type A.<span style="mso-spacerun: yes">&nbsp; </span>The
  second rule applies to guard</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE
  &quot;guard&quot; </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>s and says that a guarded expression
  X has the type A if the guard has the type boolean</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>boolean</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>and X has the type A under the assumption that the guard is
  verified.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>These rules are
  fairly straightforward.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  Patterns Rule is used to typecheck extended abstractions.<span
  style="mso-spacerun: yes">&nbsp; </span>We assume that </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>V<sub>1</sub> &#8230;.V<sub>n</sub> are
  all the variables occurring in P, and </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1</span></sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> , &#8230;, </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>f</span><sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>n </span></sub><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>are fresh</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>symbols, and C<sub>1</sub>, &#8230;C<sub>n<span
  style="mso-spacerun: yes">&nbsp; </span></sub></span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>are fresh
  variables.<span style="mso-spacerun: yes">&nbsp; </span>For any </span><span
  style='font-family:Symbol'>k</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>, the expression [</span><span
  style='font-family:Symbol'>k</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>]</span><sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>&lt;</span></sub><sub><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span></sub><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1&#8230;</span></sub><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'> <sub>f</sub></span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>n&gt;/&lt;V1,..,Vn&gt; </span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>indicates
  the replacement of the free occurrences of the variables </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>V<sub>1</sub> &#8230;.V<sub>n</sub> in </span><span
  style='font-family:Symbol'>k</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>by
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1</span></sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> , &#8230;, </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>f</span><sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>n</span></sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>.<u7:p></u7:p></span></p>
  <span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman";
  mso-fareast-font-family:"Times New Roman";color:black;mso-ansi-language:EN-GB;
  mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br clear=all
  style='mso-special-character:line-break;page-break-before:always'>
  </span>
  <p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
  <p align=center style='text-align:center'><i><span style='font-size:10.0pt;
  mso-bidi-font-size:12.0pt;font-family:"Microsoft Sans Serif"'>Patterns Rule</span></i><!--[if supportFields]><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol;color:windowtext;
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span> XE
  &quot;Patterns Rule&quot; </span></i><![endif]--><!--[if supportFields]><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol;color:windowtext;
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></i><![endif]--><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol;color:windowtext;
  mso-ansi-language:EN-GB'><u7:p></u7:p><u5:p></u5:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1</span></sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : C<sub>1</sub>, &#8230;, </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> n</span></sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : C<sub>n</sub> &gt;&gt; [P]<sub>&lt;</sub></span><sub><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span></sub><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1&#8230;</span></sub><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'> <sub>f</sub></span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>n&gt;/&lt;V1,..,Vn&gt;</span></sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : A;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[P]<sub>&lt;</sub></span></u><u><sub><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span></sub></u><u><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1&#8230;</span></sub></u><u><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> <sub>f</sub></span></u><u><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>n&gt;/&lt;V1,..,Vn&gt; </span></sub></u><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>: A &gt;&gt; [X]<sub>&lt;</sub></span></u><u><sub><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span></sub></u><u><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1&#8230;</span></sub></u><u><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> <sub>f</sub></span></u><u><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>n&gt;/&lt;V1,..,Vn&gt; </span></sub></u><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>: B;<u7:p></u7:p></span></u></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.35pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> P X) : (A </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> B);<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center;
  mso-outline-level:1'><i><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US'>Figure 13.9
  The rule for typechecking extended abstractions<u7:p></u7:p></span></i></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The <i>Patterns Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Patterns Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>subsumes the <i>Abstractions Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Abstractions Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>as a
  special case.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Thus given P
  is a variable then the sequent</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sequent</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span></span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>f</span><sub><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>1</span></sub><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> : C<sub>1</sub>,
  &#8230;, </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> n</span></sub><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> : C<sub>n</sub> &gt;&gt; [P]<sub>&lt;</sub></span><sub><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>f</span></sub><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1&#8230;</span></sub><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'> <sub>f</sub></span><sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>n&gt;/&lt;V1,..,Vn&gt;</span></sub><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> : A; collapses into a problem
  equivalent to the trivial P : C &gt;&gt; P : A (where C is a fresh</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>variable).<span style="mso-spacerun: yes">&nbsp; </span>The
  second sequent is just the same as the problem posed by the <i>Abstractions
  Rule</i>. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>We illustrate the action of these
  rules by reference to the example of the last chapter, which is reproduced
  here.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span>(</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>M (</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>B (cases<span style="mso-spacerun:
  yes">&nbsp; </span>(((</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'> </span><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;</span>(((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons U W) (where (= U X) true))
  A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>(((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> X (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons Z Y)<span
  style="mso-spacerun: yes">&nbsp; </span>((M X) Y))) A) B))))))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Here is a proof that the function defined has the type (</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol'>&quot;</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>A (A </span><span lang=EN-GB
  style='font-size:10.0pt;font-family:Symbol'>�</span><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> ((list</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE
  &quot;list&quot; </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>A) </span><span lang=EN-GB style='font-size:10.0pt;
  font-family:Symbol'>�</span><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  boolean</span><!--[if supportFields]><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<b style='mso-bidi-font-weight:
  normal'>boolean</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>))). <u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Proof:</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span>(</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>M (</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>B (cases<span style="mso-spacerun:
  yes">&nbsp; </span>(((</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons U W) (where (= U X) true))
  A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons Z Y)<span
  style="mso-spacerun: yes">&nbsp; </span>((M X) Y))) A) B)))))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:1.5in;margin-bottom:.0001pt;text-align:justify;text-indent:
  .5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>:</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>(</b></span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> <b>(A</b> </span><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> <b>((list</b></span><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>A)</span></span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>)))<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>By the <i>Generalisation Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span>Generalisation Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span>(</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>M (</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>B (cases<span style="mso-spacerun:
  yes">&nbsp; </span>(((</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons U W) (where (= U X) true))
  A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons Z Y)<span
  style="mso-spacerun: yes">&nbsp; </span>((M X) Y))) A) B))))))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:2.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  .5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>:</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>(c</b> </span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>((list</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c)</span></span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>))<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:2.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  .5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>By
  the <i>Combinator Rule</i></span><!--[if supportFields]><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;Combinator Rule&quot; </span></i><![endif]--><!--[if supportFields]><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p><u5:p></u5:p><u6:p></u6:p></span></p>
  <span style='font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:
  "Times New Roman";color:black;mso-ansi-language:EN-US;mso-fareast-language:
  EN-US;mso-bidi-language:AR-SA'><br clear=all style='mso-special-character:
  line-break;page-break-before:always'>
  </span>
  <p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'>&nbsp;<o:p></o:p></p>
  <u6:p></u6:p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'>M : (c</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'> <b>((list</b></span><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>list</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.3pt'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c)</span></span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  Symbol;letter-spacing:-.3pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>boolean</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.3pt'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-bidi-font-weight:bold'>))</span></span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'>&gt;&gt; <b>(</b></span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>A (</span></b><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'>B (cases (((</span></b><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'> V (</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>[] false)) A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>X (</span></b><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'>(cons U W) (where (= U X) true)) A) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'><span
  style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'> X (</span></b><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'>(cons Z Y)<span style="mso-spacerun:
  yes">&nbsp; </span>((M X) Y))) A) B)))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:2.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'>:</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'> <b>(c</b> </span><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'> <b>((list</b></span><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>list</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.3pt'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c)</span></span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.3pt;mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:
  Symbol;letter-spacing:-.3pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'>boolean</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.3pt'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.3pt;mso-ansi-language:
  EN-GB'><span style='mso-bidi-font-weight:bold'>))<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:2.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -1.5in'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in;mso-outline-level:1'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>By the <i>Abstractions Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span>Abstractions Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a : c, M : (c</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> <b>((list</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c) </span></span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> <b>boolean</b></span><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>))</span></span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&gt;&gt; <b>(</b></span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>B (cases<span style="mso-spacerun:
  yes">&nbsp; </span>(((</span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'> </span><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>(((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons U W) (where (= U X) true))
  a) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -2.5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons Z Y)<span
  style="mso-spacerun: yes">&nbsp; </span>((M X) Y))) a) B))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -2.5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>: ((list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c)</span></span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>)<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -2.5in'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in;mso-outline-level:1'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>By the <i>Abstractions Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span>Abstractions Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>b : (list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c), a : c, M : (c</span></span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <b>((list c)
  </b></span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>))</span></span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&gt;&gt; <b>(cases<span
  style="mso-spacerun: yes">&nbsp; </span>(((</b></span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) b)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;text-indent:
  .5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons U W) (where (= U X) true))
  a) B)<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;text-indent:
  .5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons Z Y)<span
  style="mso-spacerun: yes">&nbsp; </span>((M X) Y))) a) b)) : boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -202.5pt'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Let </span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>D</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> = {<b>b : (list</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c), a : c, M : (c</span></span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <b>((list c)
  </b></span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>boolean</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>))</span></span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>}, then by the <i>Cases Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE
  &quot;Cases Rule&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, three cases remain to be proved. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.75in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1.</span><b><span lang=EN-GB
  style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>D <span style="mso-spacerun:
  yes">&nbsp;</span>&gt;&gt; </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>(((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) b) : boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.75in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.5pt;mso-ansi-language:EN-GB'>2.</span><b><span
  lang=EN-GB style='font-size:7.0pt;letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></b><span lang=EN-GB style='font-family:Symbol;letter-spacing:-.5pt;
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>D <span
  style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun:
  yes">&nbsp;</span>&gt;&gt; </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>(((</span></b><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.5pt;mso-ansi-language:EN-GB'>X (</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>(cons U W) (where (= U X) true)) a) b) : boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'>boolean</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt;mso-ansi-language:
  EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.75in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>3.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>D <span style="mso-spacerun:
  yes">&nbsp;</span>&gt;&gt; </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> X (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(cons Z Y) ((M X) Y))) a) b) :
  boolean</span></b><!--[if supportFields]><b><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana;
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span>
  XE &quot;</b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='mso-ansi-language:EN-GB'>boolean</span><span style='mso-bidi-font-weight:
  bold'>&quot; </span></b><![endif]--><!--[if supportFields]><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana;
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana;
  mso-ansi-language:EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><b><u><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in;mso-outline-level:1'><b><u><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Case 1:</span></u></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp; </span></span><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) b) : boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D
  &gt;&gt; </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) b) : boolean</span></b><!--[if supportFields]><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana;
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span>
  XE &quot;</b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='mso-ansi-language:EN-GB'>boolean</span><span style='mso-bidi-font-weight:
  bold'>&quot; </span></b><![endif]--><!--[if supportFields]><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana;
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana;
  mso-ansi-language:EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>By
  the <i>Applications Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span>Applications Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) : (D </span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>)<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>b : D<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The second problem is solved by <i>Sequents</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>with <b>D</b>
  </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>(list</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c)</span></span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>.<span style="mso-spacerun: yes">&nbsp; </span>We are left with<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) a) : ((list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c) </span></span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> boolean</span></b><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>)<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>By
  the <i>Applications Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span>Applications Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) : (E </span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> ((list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c) </span></span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> boolean</span></b><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>))<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>a : E<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The second problem is solved by <i>Sequents</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>with <b>E</b>
  </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.5pt;mso-ansi-language:EN-GB'>|</span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.5pt;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b>c</b>.<span
  style="mso-spacerun: yes">&nbsp; </span>We are left with<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> V (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[] false)) : (c </span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> ((list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c) </span></span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> boolean</span></b><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>))<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>By the <i>Abstractions Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span>Abstractions Rule<span
  style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>v : c,</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>D &gt;&gt; </span><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>(</span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>[] false) : ((list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c) </span></span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>�</span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> boolean</span></b><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>)<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in;mso-outline-level:1'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:4.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -3.5in;mso-outline-level:1'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>By the <i>Patterns Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span><span
  style='mso-bidi-font-style:italic'> XE &quot;</span></span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Patterns Rule</span></i><i><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></i><![endif]--><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span></i><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>this is provable if<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>v : c,</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>D &gt;&gt; <b>[] :</b> </span><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>(list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c)<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>v : c,</span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>[] : </span></b><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>(list</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>c), </span></span></b><span lang=EN-GB style='font-family:
  Symbol;mso-ansi-language:EN-GB'>D</span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'> &gt;&gt; false : boolean<u7:p></u7:p></span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p><u5:p></u5:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>which are both solved by the <i>Primitive
  Rule</i>.</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><i style='mso-bidi-font-style:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Primitive Rule</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>The proof of the remaining cases is left to the reader.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Internal forms are all ephemeral
  objects that exist during the compilation of Qi functions and do not appear
  in the resulting object code.<span style="mso-spacerun: yes">&nbsp;
  </span>Consequently it is not possible to execute internal forms as actual
  procedures.<span style="mso-spacerun: yes">&nbsp; </span>Thus an attempt to
  evaluate the expression <b>(cases 1 2 3)</b> will return the message that <b>cases
  </b>is not defined. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><u><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>13.8 Mutual Recursion______________________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The </span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><b><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span></i></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>combinator</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>combinator</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>can also handle mutual recursion</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Mutual
  recursion</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>recursion</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>.<span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp; </span>Thus <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(define even? <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>{number - -&gt; boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>} <u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>1 -&gt; false <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>X -&gt; (odd? ((- X) 1)))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(define odd? <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>{number --&gt;</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'> </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>}<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>1 -&gt; true <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>X -&gt; (even? ((- X) 1))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>is represented first by
  individually representing each function in </span><span style='font-family:
  BrushScrD;mso-bidi-font-style:italic'>L</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB;mso-bidi-font-style:italic'>.<u7:p></u7:p></span></p>
  <span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman";
  mso-fareast-font-family:"Times New Roman";color:black;mso-ansi-language:EN-GB;
  mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br clear=all
  style='page-break-before:always'>
  </span>
  <p style='margin-left:.5in'><b><span lang=EN-GB style='font-size:10.0pt;
  mso-bidi-font-size:12.0pt;mso-ansi-language:EN-GB'>(</span></b><span
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
  Symbol;mso-ansi-language:EN-GB'>l</span><b><span lang=EN-GB style='font-size:
  10.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:EN-GB'> </span></b><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";color:windowtext;mso-ansi-language:
  EN-GB'>A (cases</span></b><b><span lang=EN-GB style='font-size:10.0pt;
  mso-bidi-font-size:12.0pt;mso-ansi-language:EN-GB'> </span></b><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";color:windowtext;mso-ansi-language:
  EN-GB'>((</span></b><b><span lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:
  12.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>l </span></b><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";color:windowtext;mso-ansi-language:
  EN-GB'>1 false) A) <u7:p></u7:p><u5:p></u5:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>((</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>X (odd? ((- X) 1))) A)))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A (cases ((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1 true) A) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X (even? ((-
  X) 1))) A))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The constituent functions of the
  mutual recursion</span><!--[if supportFields]><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>recursion</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>are paired to form a tuple</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>tuple</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>. <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.2pt;mso-ansi-language:EN-GB'>(@p (</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'> A (cases ((</span></b><span lang=EN-GB style='font-family:Symbol;
  letter-spacing:-.2pt;mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.2pt;mso-ansi-language:EN-GB'>1 false) A) ((</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'>X (odd? ((- X) 1))) A)))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.2pt;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>(</span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'>l</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.2pt;mso-ansi-language:
  EN-GB'> A (cases ((</span></b><span lang=EN-GB style='font-family:Symbol;
  letter-spacing:-.2pt;mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.2pt;mso-ansi-language:EN-GB'>1 true) A)<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>((</span></b><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.2pt;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.2pt;mso-ansi-language:EN-GB'>X (even? ((-
  X) 1))) A))))</span></b><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Each recursive</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span>
  </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>XE &quot;</span><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>recursive</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>call to a function in the tuple is replaced by an index to
  the position of the function in the tuple.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(@p (</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A (cases ((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1 false) A) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X ((snd T)
  ((- X) 1))) A)))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A (cases ((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1 true) A) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X ((fst T)
  ((- X) 1))) A)))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Finally, the parameter<b> T </b>is
  lambda-bound</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>bound</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>in the scope of a </span><b><i><span lang=EN-GB
  style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> -combinator</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Y-combinator</span></b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>.<a style='mso-footnote-id:ftn5'
  href="#_ftn5" name="_ftnref5" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[5]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[5][5][5]<u7:p></u7:p></span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(</span></b><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span><b>(</b></span><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>l </span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>T</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'> </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(@p (</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A (cases ((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1 false) A) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X ((snd T)
  ((- X) 1))) A)))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A (cases ((</span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1 true) A) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>((</span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>l </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X ((fst T)
  ((- X) 1))) A)))))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:2.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  -49.5pt'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>: ((number </span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>) * (number </span></span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> boolean))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>We abbreviate<b> (@p &#8230;)))) </b>by <b>P</b>,
  we can prove that<b> (</b></span><b><i><span lang=EN-GB style='font-family:
  "Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp; </span><b>(</b></span><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> T P)) : ((number </span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>) * (number </span></span></b><span
  lang=EN-GB style='font-family:Symbol;mso-ansi-language:EN-GB'>�</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> boolean)).<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Proof Sketch:</span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> <b><span style='letter-spacing:
  -.6pt'>(</span></b></span><b><i><span lang=EN-GB style='font-family:"Signet Roundhand";
  letter-spacing:-.6pt;mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.6pt;mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp; </span><b>(</b></span><span lang=EN-GB
  style='font-family:Symbol;letter-spacing:-.6pt;mso-ansi-language:EN-GB'>l</span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.6pt;mso-ansi-language:EN-GB'> T P)) :
  ((number </span></b><span lang=EN-GB style='font-family:Symbol;letter-spacing:
  -.6pt;mso-ansi-language:EN-GB'>�</span><b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.6pt;mso-ansi-language:EN-GB'> boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.6pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.6pt'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.6pt;mso-ansi-language:
  EN-GB'>boolean</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  letter-spacing:-.6pt'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.6pt;mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.6pt;mso-ansi-language:
  EN-GB'><span style='mso-bidi-font-weight:bold'>) * (number </span></span></b><span
  lang=EN-GB style='font-family:Symbol;letter-spacing:-.6pt;mso-ansi-language:
  EN-GB'>�</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.6pt;mso-ansi-language:
  EN-GB'> boolean))</span></b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> if<b> T :
  ((number </b></span><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> boolean) *
  (number </span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> boolean))
  &gt;&gt; P : ((number </span></b><span lang=EN-GB style='font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> boolean) *
  (number </span></b><span lang=EN-GB style='font-family:Symbol;mso-ansi-language:
  EN-GB'>�</span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> boolean)). <span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>We leave the rest of the proof to
  the reader.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><u><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>13.9 Global</span></u></b><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><u><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></u></b><b><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;<i style='mso-bidi-font-style:normal'>Global</i>&quot; \b </span></u></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><u><span lang=EN-GB style='font-size:
  14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></u></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><u><span lang=EN-GB style='font-size:
  14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>Variables______________________<u7:p></u7:p></span></span></u></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The <i>Global</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-style:italic'>
  XE &quot;</span>Global<span style='mso-bidi-font-style:italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule</span></span></i><span lang=EN-GB style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  states that an assignment</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span> XE
  &quot;assignment&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>of Y to X has the type A just when X is a symbol and it is
  provable that both the current value</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>value</b>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>of X has the type A and so does Y.<span
  style="mso-spacerun: yes">&nbsp; </span>Since Qi contains no rules that
  enable conclusions of the form (value X) : A to be proved, it is left to the
  user to enrich the type system by a rule stating the kind of object assigned
  to X in the way explained in chapter 11. <b>set</b> is also a special form.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-pagination:widow-orphan lines-together;mso-outline-level:1'><i><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Global</span></i><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Global<span style='mso-bidi-font-style:
  italic'>&quot; \b </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-style:italic'><span style="mso-spacerun:
  yes">&nbsp;</span>Rule<u7:p></u7:p></span></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-pagination:widow-orphan lines-together'><i><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>where X is a symbol<u7:p></u7:p></span></i></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;text-align:center;
  mso-pagination:widow-orphan lines-together'><u><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>(<b>value</b></span></u><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><u><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span></u></b><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></u><b style='mso-bidi-font-weight:normal'><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>value</span></u></b><u><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></u><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></u></b><![endif]--><u><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>X) : A; Y : A;<u7:p></u7:p></span></u></p>
  <p class=MsoNormal align=center style='margin-top:0in;margin-right:-.3pt;
  margin-bottom:0in;margin-left:135.0pt;margin-bottom:.0001pt;text-align:center;
  text-indent:-99.0pt;mso-pagination:widow-orphan lines-together;tab-stops:
  0in'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(<b>set</b> X Y) : A;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.3pt;margin-bottom:
  0in;margin-left:1.0in;margin-bottom:.0001pt;text-align:justify;text-indent:
  .5in;mso-pagination:widow-orphan lines-together'><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <h2 style='margin-top:0in;margin-right:-.3pt;margin-bottom:0in;margin-left:
  .5in;margin-bottom:.0001pt;mso-pagination:widow-orphan lines-together'><span
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-US'>Figure 13.10 The rule for
  typechecking global assignments<u7:p></u7:p></span></h2>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><u><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>13.10 Procedure </span></u></b><u><span lang=EN-GB
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:BrushScrD;
  mso-ansi-language:EN-GB'>T</span></u><b><u><span lang=EN-GB style='font-size:
  14.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>
  *________________________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>In the absence of any user axioms,
  the proof procedure </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB'>T</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> for
  typechecking is depth-first search</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><i><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>depth-first
  search</span></i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>with chronological backtracking</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span>
  </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>XE &quot;</span><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>backtracking</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>tracking</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>, and </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> is sound and</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>sound</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>terminating in respect of the type rules we have stated.<a
  style='mso-footnote-id:ftn6' href="#_ftn6" name="_ftnref6" title=""><span
  class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[6]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[6][6][6]</span> Another piece of good news is </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> is accurate, in the sense that if
  </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> says that an expression has a
  type, then it really does have that type.<a style='mso-footnote-id:ftn7'
  href="#_ftn7" name="_ftnref7" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[7]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[7][7][7]<u7:p></u7:p></span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The downside is that </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> is not particularly efficient.
  The <i>Cases Rule</i></span><!--[if supportFields]><i style='mso-bidi-font-style:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE
  &quot;Cases Rule&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>, for instance, splits a proof of (cases Case<sub>1</sub>
  &#8230; Case<i><sub>n</sub></i>) : A into a number of subproofs that work on each
  Case<i><sub>i</sub></i>.<span style="mso-spacerun: yes">&nbsp;&nbsp;
  </span>Since the type A is known and is variable-free, each Case<i><sub>i</sub></i>
  can be treated independently and there is really no need for backtracking
  between these subproofs of Case<i><sub>i </sub></i>: A.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Other rules offer opportunities
  for the elimination of choice points. The <i>Combinator Rule</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></i><i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></i><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Combinator
  Rule</span></i><i><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&quot; \b </span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></i><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>is the
  only rule for checking combinators and so is a <b>committed choice</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>committed
  choice</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>in the
  sense that if it can be applied, it should be and there should be no
  backtracking to reconsider this decision. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Another problem with </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Brush Script MT";mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>is that the procedure targets </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>L</span><span
  lang=EN-GB style='font-family:"Brush Script MT";mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>expressions rather than Qi<i> </i>expressions,
  and this creates two problems.<span style="mso-spacerun: yes">&nbsp;
  </span>First, </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB'>L</span><span lang=EN-GB style='font-family:"Brush Script MT";
  mso-ansi-language:EN-GB'> </span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>expressions
  are generally larger and more deeply nested than Qi expressions, so the time
  spent on inferencing is proportionately greater.<span style="mso-spacerun:
  yes">&nbsp; </span>Second, any type errors detected are detected in </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>L</span><span
  lang=EN-GB style='font-family:"Brush Script MT";mso-ansi-language:EN-GB'> </span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>expressions and not in the Qi<i> </i>source,
  which makes it hard to raise a clear type error report.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>* procedure eliminates these
  disadvantages by type checking Qi<i> </i>source, and procedurally implements
  the role of many of the type rules used in </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Brush Script MT";mso-ansi-language:EN-GB'>. </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  Y-combinator</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>combinator</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  Pattern, Cases, Generalisation and Guard rules are redundant in </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*.
  The bogus choicepoints are omitted. The </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>* procedure</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  operates on a typed Qi<i> </i>function definition.<span style="mso-spacerun:
  yes">&nbsp; </span>Such a definition generally has the form.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(define &lt;function&gt;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>{A</span></b><sub><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1</span></sub><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> - -&gt; </span></b><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;.<u7:p></u7:p></span><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span>A</span></b><sub><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>n</span></sub><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> - -&gt; B}<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span></span></b><sub><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>a</span></sub><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>p</span></b><sub><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;.<u7:p></u7:p></span><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span></b><sub><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>a</span></sub><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>p</span></b><sub><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>n</span></sub><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> -&gt; r</span></b><sub><span lang=EN-GB style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>a<u7:p></u7:p></span></sub></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&#8230;&#8230;&#8230;&#8230;&#8230;.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span></span></b><sub><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>m</span></sub><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>p</span></b><sub><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;.<u7:p></u7:p></span><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp; </span></span></b><sub><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>m</span></sub><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>p</span></b><sub><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>n</span></sub><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  -&gt; r</span></b><sub><span lang=EN-GB style='font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>m</span></sub><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>)<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Each rule <sub>i</sub><b>p</b><sub>1</sub><b> ... </b><sub>i</sub><b>p</b><sub>n</sub><b>
  -&gt; r</b><sub>i<b> </b></sub>can be thought of as defining a sort of
  mini-function whose type is intended to be identical with the host
  function.<span style="mso-spacerun: yes">&nbsp; </span>Therefore to typecheck
  the entire function, it is enough to show that each rewrite rule obeys the
  type associated with its host function.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span><span
  style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Under </span><span lang=EN-GB style='font-family:BrushScrD'>T</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>*, the process of type checking a
  rewrite rule has two parts, corresponding to the two structural components of
  a rule.<span style="mso-spacerun: yes">&nbsp; </span>The first structural
  component is a sequence of patterns and the second is the result returned if
  the patterns match the inputs.<span style="mso-spacerun: yes">&nbsp;
  </span>The first job of the type checker is to show that each pattern <b>p </b>fits
  the type assigned to it.<b> </b>This we call <b>the integrity condition</b>.
  The second job is to show that, assuming the integrity conditions are met,
  that the result has the type expected of it.<span style="mso-spacerun:
  yes">&nbsp; </span>This we call the <b>correctness condition</b>.<span
  style="mso-spacerun: yes">&nbsp; </span>The two principles are defined below.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>The Integrity Condition</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-weight:
  bold'> XE &quot;</span>Integrity Condition<span style='mso-bidi-font-weight:
  bold'>&quot; \b </span></span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>An assignment of a type <b>B</b> to pattern <b>p</b><sub> </sub>meets
  the integrity condition<sub> </sub>just when the sequent </span><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol'>D</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> &gt;&gt; <b>p</b> : <b>B</b> is
  provable; where </span><span lang=EN-GB style='font-size:10.0pt;font-family:
  Symbol'>D</span><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> is the set of typings {<b>V, A</b> |
  <b>V : A</b>} where <b>V</b> is a variable in <b>p</b><sub> </sub>and <b>A</b>
  is a fresh</span><!--[if supportFields]><span lang=EN-GB style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<b style='mso-bidi-font-weight:
  normal'>fresh</b>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>type variable.<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>The Correctness Condition</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-weight:
  bold'> XE &quot;</span>Correctness Condition<span style='mso-bidi-font-weight:
  bold'>&quot; \b </span></span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify;mso-layout-grid-align:
  none;text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Assume a rule <b>p</b><sub>1</sub><b>
  &#8230;&#8230;.. p</b><sub>n </sub><b>-&gt; r</b> is assigned the type <b>A</b><sub>1</sub>
  </span><span style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <b>&#8230;. A</b><sub>n</sub> </span><span style='mso-bidi-font-size:12.0pt;
  font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <b>B</b>.<span style="mso-spacerun:
  yes">&nbsp; </span>Then this assignment meets the correctness condition<sub> </sub>just
  when the sequent <b>p</b><sub>1</sub><b> : A</b><sub>1</sub><b> &#8230; p</b><sub>n
  </sub><b>: A</b><sub>n </sub>&gt;&gt; <b>r</b><sub> </sub>: <b>B</b><sub> </sub>is
  provable.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-family:BrushScrD'>T</span><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*
  verifies the type security of a function through establishing these two
  properties. Lets see what this means in concrete terms through an
  example.<span style="mso-spacerun: yes">&nbsp; </span>Here is a definition of
  a datatype called <b>details</b> which represents the details about a person
  &#8211; her name, address and telephone number. <span style="mso-spacerun:
  yes">&nbsp;</span><u6:p></u6:p></span><span lang=EN-GB><o:p></o:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><u7:p></u7:p><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(datatype details<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span><i>\details
  right\<u7:p></u7:p></i></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span><u>Name :
  string; Address : string; Telephone : number;<u7:p></u7:p></u></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>[Name
  Address Telephone] : details;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span><i>\details
  left\<u7:p></u7:p></i></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span><u>Name :
  string, Address : string, Telephone : number &gt;&gt; P;<u7:p></u7:p></u></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>[Name
  Address Telephone] : details &gt;&gt; P;)<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The function <b>address</b> returns the address of a
  person given their details. <u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(define address<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;</span>{details - -&gt; string}<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;
  </span>[Name Address Telephone] -&gt; Address)<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Represented in cons form; this definition appears as:<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(define address<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp;
  </span>{details - -&gt; string}<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>(cons
  Name (cons Address (cons Telephone []))) -&gt; Address)<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>To establish the type <b>details - -&gt; string, </b>we
  have to satisfy the Integrity and Correctness Principles.<span
  style="mso-spacerun: yes">&nbsp; </span>The Integrity Principle requires that
  the following sequent be proved.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Name : A, Address : B, Telephone : C <u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>&gt;&gt;
  (cons Name (cons Address (cons Telephone []))) : details<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The details right rule maps this sequent to three subgoals.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Name : A, Address : B, Telephone : C<span
  style="mso-spacerun: yes">&nbsp; </span>&gt;&gt; Name : string;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Name : A, Address : B, Telephone : C<span
  style="mso-spacerun: yes">&nbsp; </span>&gt;&gt; Address : string;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Name : A, Address : B, Telephone : C<span
  style="mso-spacerun: yes">&nbsp; </span>&gt;&gt; Telephone : number;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>These sequents are solvable under the assignments A </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt'>|</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol;letter-spacing:-.5pt'>�</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> string, B </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt'>|</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol;letter-spacing:-.5pt'>�</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> string, and C </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.5pt'>|</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:Symbol;letter-spacing:-.5pt'>�</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> number. The Correctness Condition</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>Correctness Condition</b>&quot;
  \b </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>then requires that that the following sequent be proved.<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB>&nbsp;<u5:p></u5:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(cons Name (cons Address (cons Telephone []))) : details <u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:1.0in;text-indent:.5in'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&gt;&gt; Address : string<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The details left rule maps this sequent to an immediately
  soluble goal.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Name : string, Address : string, Telephone : number <u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:1.0in;text-indent:.5in'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&gt;&gt; Address : string<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The Correctness Condition</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>Correctness Condition</b>&quot;
  \b </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>in its current form is adequate only for non-recursive
  functions.<span style="mso-spacerun: yes">&nbsp; </span>We define the
  expression &#8216;<b>r</b> is recursive w.r.t. <i>f</i>&#8217; to mean that <b>r</b>
  occurs in a recursive definition of <i>f</i> and a recursive call to <i>f</i>
  occurs within <b>r</b>. The first revision to the Correctness Condition
  caters for such recursive calls.<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>The Correctness Condition</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-weight:
  bold'> XE &quot;</span>Correctness Condition<span style='mso-bidi-font-weight:
  bold'>&quot; \b </span></span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>(Revised)<u7:p></u7:p></span></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify;mso-layout-grid-align:
  none;text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Assume a rule <b>p</b><sub>1</sub><b>
  &#8230; p</b><sub>n </sub><b>-&gt; r is </b>is assigned the type <b>A</b><sub>1</sub>
  </span><span style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <b>&#8230;. A</b><sub>n</sub> </span><span style='mso-bidi-font-size:12.0pt;
  font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <b>B </b>and<b> r</b> is not
  recursive w.r.t. <i>f</i>.<span style="mso-spacerun: yes">&nbsp; </span>Then
  this assignment meets the correctness condition<sub> </sub>just when the sequent
  <b>p</b><sub>1</sub><b> : A</b><sub>1</sub><b> &#8230; p</b><sub>n </sub><b>: A</b><sub>n
  </sub>&gt;&gt; <b>r</b><sub> </sub>: <b>B</b><sub> </sub>is provable. Assume
  a rule <b>p</b><sub>1</sub><b> &#8230; p</b><sub>n </sub><b>-&gt; r is </b>is
  assigned the type <b>A</b><sub>1</sub> </span><span style='mso-bidi-font-size:
  12.0pt;font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <b>&#8230;. A</b><sub>n</sub> </span><span
  style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <b>B </b>and<b> r</b> is recursive w.r.t. <i>f</i>.<span style="mso-spacerun:
  yes">&nbsp; </span>Then this assignment meets the correctness condition<sub> </sub>just
  when the sequent<span style="mso-spacerun: yes">&nbsp; </span><i>f</i><b><span
  style="mso-spacerun: yes">&nbsp; </span>: A</b><sub>1</sub> </span><span
  style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <b>&#8230;. A</b><sub>n</sub> </span><span style='mso-bidi-font-size:12.0pt;
  font-family:Symbol'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> <b>B</b></span><span
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>,</span><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> p</span></b><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1</span></sub><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  : A</span></b><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1</span></sub><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  &#8230; p</span></b><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>n </span></sub><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>:
  A</span></b><sub><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>n </span></sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&gt;&gt; <b>r</b><sub> </sub>: <b>B</b><sub>
  </sub>is provable.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Here is an illustration using the linear recursive
  definition of the factorial function.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(define factorial<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>{number -
  -&gt; number}<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>0 -&gt; 1<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>X -&gt; (* X
  (factorial (- X 1))))<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>After currying, the proof obligations that the typechecker
  generates are:<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>1.</span><b><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></b><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&gt;&gt; 0 : number;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>2.</span><b><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></b><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>0 : number &gt;&gt; 1 : number;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>3.</span><b><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></b><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>X : A<span style="mso-spacerun:
  yes">&nbsp; </span>&gt;&gt; X : number;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>4.</span><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>X : number, factorial : (number -
  -&gt; number) <u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:1.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&gt;&gt; ((* X) (factorial ((- X) 1)))) : number<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Sequent 1. is generated by applying the Integrity
  Condition</span><!--[if supportFields]><span lang=EN-GB style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<b style='mso-bidi-font-weight:
  normal'>Integrity Condition</b>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>to the first rewrite rule and sequent 3. by applying the
  same condition to the second rewrite rule. Sequents</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<i style='mso-bidi-font-style:normal'>Sequents</i>&quot; \b </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>2. and 3. come from applying the Correctness Condition</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>Correctness Condition</b>&quot;
  \b </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>to the first and second rewrite rules respectively.<span
  style="mso-spacerun: yes">&nbsp; </span>Since the expression <b>(* X
  (factorial (- X 1))) </b>is recursive with respect to <b>factorial</b>, an
  extra assumption <b>factorial : (number - -&gt; number) </b>is required.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The Correctness Condition</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>Correctness Condition</b>&quot;
  \b </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>does not deal with guards or constructions using <b>&lt;-</b>.<span
  style="mso-spacerun: yes">&nbsp; </span>The latter do not pose any special
  problem because they can be eliminated in favour of the forward arrow using
  the equivalences of chapter 7.<span style="mso-spacerun: yes">&nbsp;
  </span>The use of guards is also straightforward to typecheck.<span
  style="mso-spacerun: yes">&nbsp; </span>The rule <u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>p</span></b><sub><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>1</span></sub><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> &#8230;
  p</span></b><sub><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>n</span></sub><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> -&gt; r</span></b><sub><span lang=EN-GB style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  <span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
  lang=EN-GB><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span></span></sub><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>where G<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify;mso-layout-grid-align:
  none;text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>has the type <b>A</b><sub>1</sub><b> </b></span><span
  style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  &#8230; A</span></b><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>n</span></sub><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span></b><span style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  B</span></b><sub><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span></sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>just when the Integrity Condition</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<b style='mso-bidi-font-weight:
  normal'>Integrity Condition</b>&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>and Correctness Conditions are met and
  <b>G</b> can be proved to be a boolean under much the same assumptions as
  required in the proof of correctness. In other words that is, all of the
  following conditions are met; for each <b>p</b><sub>i, </sub>let </span><span
  style='font-family:Symbol'>D</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>i </span></sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>be
  the set of typings {<b>V, A</b> | <b>V : A</b>} where <b>V</b> is a variable
  in <b>p</b><sub>i </sub>and <b>A</b> is a fresh</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>type variable.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify;mso-layout-grid-align:
  none;text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>1.</span><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Symbol'>D</span><sub><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>i</span></sub><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> &gt;&gt; <b>p</b><sub>i</sub> : <b>A</b><sub>i</sub> is
  provable for each <b>i</b> of <b>1,&#8230;,n</b>. <span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>(Integrity)<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>2.</span><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>G : verified</span></b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>, <b>p</b><sub>1</sub> : <b>A</b><sub>1</sub>
  &#8230;<b> p</b><sub>n</sub> : <b>A</b><sub>n</sub> </span><span lang=EN-GB
  style='font-size:10.0pt;font-family:Symbol'><span style="mso-spacerun:
  yes">&nbsp;</span>&gt;&gt; </span><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>r</span></b><sub><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span></sub><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>: <b>B</b><sub>
  </sub>is provable.<span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(Correctness)<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>3.</span><span lang=EN-GB style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>The sequent <b>p</b><sub>1</sub> : <b>A</b><sub>1</sub>
  &#8230;<b> p</b><sub>n</sub> : <b>A</b><sub>n</sub> </span><span lang=EN-GB
  style='font-size:10.0pt;font-family:Symbol'><span style="mso-spacerun:
  yes">&nbsp;</span>&gt;&gt; </span><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>G</span></b><sub><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span></sub><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>: <b>boolean</b>
  is provable.<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>(Guard)<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Here is an example using these conditions.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(define find_address<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>{string -
  -&gt; [details] - -&gt; string}<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Name
  [[Name Address Telephone] | _] -&gt; Address<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Name
  [_ |<span style="mso-spacerun: yes">&nbsp; </span>Details] -&gt; (find_address
  Name Details))<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt'>The function contains no explicit
  guard, but it also contains a non-left linear rewrite rule in the first
  position.<span style="mso-spacerun: yes">&nbsp; </span>To render it
  left-linear for the purposes of type-checking, we need to insert a guard.<span
  style="mso-spacerun: yes">&nbsp; </span>After doing this, the definition
  appears as below.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>(define find_address<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp; </span>{string -
  -&gt; [details] - -&gt; string}<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Name1
  [[Name2 Address Telephone] | _] -&gt; Address <span style='mso-tab-count:
  1'>&nbsp; </span><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span></span></b></p>
  <p class=MsoBodyText style='margin-left:2.5in;text-indent:.5in'><b><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>where (= Name_1 Name_2)<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Name
  [_ |<span style="mso-spacerun: yes">&nbsp; </span>Details] -&gt;
  (find_address Name Details))<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";letter-spacing:-.1pt'>Seven proof obligations are needed to
  prove the function is well-typed (figure 13.11). <u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB>&nbsp;<u5:p></u5:p></span></p>
  <div align=center>
  <table border=0 cellspacing=0 cellpadding=0 style='margin-left:24.05pt;
   border-collapse:collapse;border:none;mso-border-alt:solid black .75pt;
   mso-padding-alt:0in 5.4pt 0in 5.4pt'>
   <tr>
    <td width=112 valign=top style='width:83.8pt;border:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Times New Roman";mso-fareast-font-family:"Times New Roman";
    mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br
    clear=all style='page-break-before:always'>
    </span><span style='font-size:10.0pt;font-family:"Times New Roman";
    mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US;
    mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br clear=all
    style='mso-special-character:line-break;page-break-before:always'>
    <u7:p></u7:p></span><span style='font-size:12.0pt;font-family:"Times New Roman";
    mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US;
    mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><u5:p></u5:p></span>
    <p class=MsoNormal><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=247 valign=top style='width:185.45pt;border:solid black .75pt;
    border-left:none;mso-border-left-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoBodyText align=center style='text-align:center'><b><span
    lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext;letter-spacing:
    -.4pt'>Rewrite Rule 1<u7:p></u7:p></span></b></p>
    </td>
    <td width=360 valign=top style='width:3.75in;border:solid black .75pt;
    border-left:none;mso-border-left-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoBodyText align=center style='text-align:center'><b><span
    lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext;letter-spacing:
    -.3pt'>Rewrite Rule 2<u7:p></u7:p></span></b></p>
    </td>
   </tr>
   <tr>
    <td width=112 valign=top style='width:83.8pt;border:solid black .75pt;
    border-top:none;mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    letter-spacing:-.3pt;mso-ansi-language:EN-GB'>Integrity<u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=247 valign=top style='width:185.45pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Name1 :
    A<span style="mso-spacerun: yes">&nbsp; </span>&gt;&gt; Name1 : string;<u7:p></u7:p><o:p></o:p></span></b></p>
    <u6:p></u6:p>
    <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
    style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";color:windowtext'>&nbsp;<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>Name2 : B,<o:p></o:p></span></b></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>Address : C, <u7:p></u7:p></span></b><span lang=EN-GB
    style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>Telephone : D, <u7:p></u7:p></span></b><span lang=EN-GB
    style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>Whatever : E <u7:p></u7:p></span></b><span lang=EN-GB
    style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>&gt;&gt; [[Name2 Address Telephone] | Whatever] <u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
    style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";color:windowtext'><span style="mso-spacerun:
    yes">&nbsp;&nbsp; </span>: (list details)<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=360 valign=top style='width:3.75in;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>Name : F &gt;&gt; Name : string <u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
    style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";color:windowtext'>&nbsp;<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>Detail : G, <u7:p></u7:p>Details : H<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>&gt;&gt; [Detail | Details] <u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText style='margin-left:.5in'><b><span lang=EN-GB
    style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";color:windowtext'>: (list details)<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width=112 valign=top style='width:83.8pt;border:solid black .75pt;
    border-top:none;mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    letter-spacing:-.3pt;mso-ansi-language:EN-GB'>Correct<u5:p></u5:p></span></b><b><span
    lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";letter-spacing:-.3pt;mso-ansi-language:EN-GB'><u6:p></u6:p>ness<u7:p></u7:p></span></b></p>
    </td>
    <u5:p></u5:p>
    <td width=247 valign=top style='width:185.45pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>Name1 : string, <u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>[[Name2 <u5:p></u5:p><u6:p></u6:p>Address Telephone] <u5:p></u5:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>| Whatever] : (list details),<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>(= Name1 Name2) : verified <u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>&gt;&gt; Address : string<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=360 valign=top style='width:3.75in;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>Name : string,<u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>[Detail | Details] : (list details),<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>find_address <u5:p></u5:p><u6:p></u6:p>: string - -&gt; <u7:p></u7:p><span
    style="mso-spacerun: yes">&nbsp;</span>((list details)<u5:p></u5:p><u6:p></u6:p>
    - -&gt; string)<u7:p></u7:p></span></b><span lang=EN-GB style='font-size:
    10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText align=left style='text-align:left'><b><span
    lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext'><span
    style="mso-spacerun: yes">&nbsp;</span>&gt;&gt; ((find_address</span></b><span
    lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext'> <b>Name) Details)
    : string<u7:p></u7:p></b><u6:p></u6:p></span><span lang=EN-GB
    style='font-size:10.0pt'><o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width=112 valign=top style='width:83.8pt;border:solid black .75pt;
    border-top:none;mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    letter-spacing:-.3pt;mso-ansi-language:EN-GB'>Guard<u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=247 valign=top style='width:185.45pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>Name : string, <u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>[[Name2 <u5:p></u5:p><u6:p></u6:p>Address Telephone] <u5:p></u5:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'><span style="mso-spacerun: yes">&nbsp;</span>| Whatever]
    : (list details)<u7:p></u7:p></span></b><span lang=EN-GB style='font-size:
    10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>&gt;&gt; (= Name1 Name2) <u5:p></u5:p><u6:p></u6:p><span
    style="mso-spacerun: yes">&nbsp;</span>: boolean<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=360 valign=top style='width:3.75in;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt'>&nbsp;<u7:p></u7:p><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  </div>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></i></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Figure 13.11 The proof obligations
  from the</span></i><b><span lang=EN-GB style='font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> find_address </span></b><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>function<u7:p></u7:p></span></i></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>The proof obligation <b>Name_1 : A &gt;&gt; Name_1 :
  string</b> is trivially solvable.<span style="mso-spacerun: yes">&nbsp;
  </span>In fact problems of this kind are always generated from patterns that
  are simply <span style='letter-spacing:-.1pt'>variables, and so </span></span><span
  lang=EN-GB style='font-family:BrushScrD;letter-spacing:-.1pt'>T</span><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";letter-spacing:-.1pt'>* omits these
  proof obligations because they are always solvable.<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Finally only mutual recursion remains to be dealt with.
  The technique of handling a mutual recursion like<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-right:-.35pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>(define even? <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-right:-.35pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>{number - -&gt; boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>} <u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-right:-.35pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>1 -&gt; false <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-right:-.35pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>X -&gt; (odd? (- X 1)))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-right:-.35pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>(define odd? <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp; </span>{number --&gt;</span></b><span lang=EN-GB
  style='font-family:Symbol;mso-ansi-language:EN-GB'> </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>boolean</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'>}<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp; </span>1 -&gt; true <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp; </span>X -&gt; (even? (- X 1))) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify;mso-layout-grid-align:
  none;text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>is to assume the typings <b>odd? :</b>
  <b>number </b></span><span style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  boolean </span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>and <b>even? :</b> <b>number </b></span><span
  style='mso-bidi-font-size:12.0pt;font-family:Symbol'>�</span><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  boolean</span></b><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> in typechecking the recursive calls.<span
  style="mso-spacerun: yes">&nbsp; </span>There are eight proof obligations
  generated by these two functions, but two are trivial and so we omit
  them.<span style="mso-spacerun: yes">&nbsp; </span>The remaining six are
  shown in figure 13.12.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;mso-layout-grid-align:none;
  text-autospace:none'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <div align=center>
  <table border=0 cellspacing=0 cellpadding=0 style='border-collapse:collapse;
   border:none;mso-border-alt:solid black .75pt;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
   <tr>
    <td width=97 valign=top style='width:73.05pt;border:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt'>&nbsp;<u7:p></u7:p><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=185 valign=top style='width:138.45pt;border:solid black .75pt;
    border-left:none;mso-border-left-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoBodyText align=left style='margin-left:.5in;text-align:left'><b><span
    lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext'>even?<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><o:p></o:p></span></p>
    </td>
    <td width=220 valign=top style='width:165.25pt;border:solid black .75pt;
    border-left:none;mso-border-left-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoBodyText align=left style='margin-left:.5in;text-align:left'><b><span
    lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext'>odd?<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width=97 valign=top style='width:73.05pt;border:solid black .75pt;
    border-top:none;mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>Integrity<u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=185 valign=top style='width:138.45pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>&gt;&gt; 1 : number;</span></b><span lang=EN-GB
    style='mso-bidi-font-size:12.0pt;font-family:Verdana;mso-ansi-language:
    EN-GB'> <u7:p></u7:p></span><span style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=220 valign=top style='width:165.25pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>&gt;&gt; 1 : number;<u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr>
    <td width=97 valign=top style='width:73.05pt;border:solid black .75pt;
    border-top:none;mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>Correctness<u7:p></u7:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=185 valign=top style='width:138.45pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>1 : number <u7:p></u7:p><span style="mso-spacerun:
    yes">&nbsp;</span>&gt;&gt; true : boolean;<u7:p></u7:p><u5:p></u5:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoNormal>&nbsp;<u5:p></u5:p></p>
    <p class=MsoBodyText><b><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext'><span
    style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p><span lang=EN-GB>X :
    number, <u7:p></u7:p></span><u6:p></u6:p></span></b><span lang=EN-GB
    style='font-size:10.0pt'><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext;letter-spacing:-.5pt'>odd? :</span></b><span lang=EN-GB
    style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";color:windowtext;letter-spacing:-.5pt'> <b>(number --&gt;
    boolean)<u7:p></u7:p><u5:p></u5:p></b><u6:p></u6:p></span><span lang=EN-GB
    style='font-size:10.0pt'><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext;letter-spacing:-.5pt'>&gt;&gt; (odd? ((- X) 1)) : boolean<u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td width=220 valign=top style='width:165.25pt;border-top:none;border-left:
    none;border-bottom:solid black .75pt;border-right:solid black .75pt;
    mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;
    padding:0in 5.4pt 0in 5.4pt'>
    <p class=MsoNormal><b><span lang=EN-GB style='mso-bidi-font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    mso-ansi-language:EN-GB'>1 : number <u7:p></u7:p>&gt;&gt; false : boolean;<u7:p></u7:p><u5:p></u5:p></span></b><span
    style='mso-bidi-font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";color:windowtext'><span
    style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p><u5:p></u5:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>X : number, <u7:p></u7:p></span></b><span lang=EN-GB
    style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>even? : (number --&gt; boolean) <u7:p></u7:p></span></b><span
    lang=EN-GB style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoBodyText><b><span lang=EN-GB style='font-size:10.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    color:windowtext'>&gt;&gt;<span style="mso-spacerun: yes">&nbsp;
    </span>(even? ((- X) 1)) : boolean<u7:p></u7:p></span></b><span lang=EN-GB
    style='font-size:10.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  </div>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Figure 13.12 The proof obligations
  from the</span></i><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>odd?</span></b><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><i><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>and</span></i><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span><b><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>even?</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span><i><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>functions<u7:p></u7:p></span></i></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The technique of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>* is to prove Integrity and
  Correctness for each rule of the function.<span style="mso-spacerun:
  yes">&nbsp; </span>There is no need for the </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Y-combinator</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>combinator</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  Pattern, Cases and Guard rules and these rules are no longer retained.<span
  style="mso-spacerun: yes">&nbsp; </span>Type variables in the type of a
  function are replaced by fresh</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fresh</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>terms at the start of the proof and so
  the Generalisation Rule</span><!--[if supportFields]><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<i style='mso-bidi-font-style:
  normal'>Generalisation Rule</i>&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>is not required. </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>* </span><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>trades
  declarative purity for a reduction in the size of the type theory, and the
  elimination of bogus choicepoints, but delivers the same result in less time.<a
  style='mso-footnote-id:ftn8' href="#_ftn8" name="_ftnref8" title=""><span
  class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[8]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[8][8][8]<u7:p></u7:p></span></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>We
  shall prove the procedural equivalence<a style='mso-footnote-id:ftn9'
  href="#_ftn9" name="_ftnref9" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[9]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[9][9][9]</span> of </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  and </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:
  EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>* by showing how the rules not used by </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  are implemented procedurally within </span><span lang=EN-GB style='font-family:
  BrushScrD;mso-ansi-language:EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>*.<span style="mso-spacerun:
  yes">&nbsp; </span>The procedural equivalence is quite simple to show, except
  in the case of the Patterns Rule.<span style="mso-spacerun: yes">&nbsp;
  </span>Figure 13.13 shows the rules used by </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  and </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:
  EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>*.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  efficiency gain in </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>* comes from three sources.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>1.</span><span
  style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  elimination of rules that are used only once in the proof.<span
  style="mso-spacerun: yes">&nbsp; </span>Instead these rules are procedurally invoked
  early in the procedure and then not used again.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>2.</span><span
  style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  elimination of bogus choice points.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>3.</span><span
  style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  elimination of long stretches of proof that are purely mechanical and add to
  the search space without changing the result.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  easiest way to demonstrate the procedural equivalence of </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  and </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:
  EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>* is to work through the rules that </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*
  does not use and see why </span><span lang=EN-GB style='font-family:BrushScrD;
  mso-ansi-language:EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>* does not use them.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>First,
  the Generalisation Rule</span><!--[if supportFields]><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<i style='mso-bidi-font-style:
  normal'>Generalisation Rule</i>&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>needs only to be used once in </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  at the beginning of a proof to remove the universal quantifiers binding the
  type variables.<span style="mso-spacerun: yes">&nbsp; </span>Since all types
  are shallow types<a style='mso-footnote-id:ftn10' href="#_ftn10"
  name="_ftnref10" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[10]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[10][10][10]</span>, the Generalisation Rule is
  not needed after these quantifiers are removed. This is done automatically in
  </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*,
  so the Generalisation Rule is not needed.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  Cases Rule</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;Cases Rule&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>requires that each case in the body of
  a definition obeys the type constraints of the whole function.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>The type constraints are free
  of shared variables, so that in effect, any proof using Cases can be split
  into <i>n</i> independent subproofs. In </span><span lang=EN-GB
  style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*,
  this is exactly what happens, each rewrite rule is checked separately to
  ensure that it meets the type constraints.<span style="mso-spacerun:
  yes">&nbsp; </span>This means that the Cases Rule is not needed in </span><span
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  Y-combinator</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>combinator</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>Rule is used in </span><span
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>T<i> </i></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>to
  typecheck recursive functions.<span style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp; </span>Effectively any abstraction (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x y) which amounts to the recursive
  definition of a function <i>f</i> is written as (</span><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span></span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>f</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x y)).<span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span>The Y-combinator Rule, when applied to a problem of
  the form<span style="mso-spacerun: yes">&nbsp; </span>(</span><b><i><span
  lang=EN-GB style='font-family:"Signet Roundhand";mso-ansi-language:EN-GB'>Y</span></i></b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp; </span></span><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>f</span></i><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x y)) : A, gives <i>f</i><span
  style="mso-spacerun: yes">&nbsp; </span>: A &gt;&gt; (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x y) : A.<span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span>Thereafter the Y-combinator Rule plays no further
  part in the proof.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>An
  obvious procedural optimisation is to generate the problem <i>f</i><span
  style="mso-spacerun: yes">&nbsp; </span>: A &gt;&gt; (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x y) : A directly from the recursive
  definition, and dispense with the Y-combinator Rule. This means that the
  Y-combinator Rule is not needed in </span><span lang=EN-GB style='font-family:
  BrushScrD;mso-ansi-language:EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>*.<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <div align=center>
  <table border=0 cellspacing=0 cellpadding=0 style='margin-left:32.85pt;
   border-collapse:collapse;border:none;mso-border-alt:solid navy .75pt;
   mso-padding-alt:0in 5.4pt 0in 5.4pt'>
   <tr style='height:27.9pt'>
    <td valign=top style='border:solid navy .75pt;border-bottom:none;
    padding:0in 5.4pt 0in 5.4pt;height:27.9pt'><span style='font-size:10.0pt;
    font-family:"Times New Roman";mso-fareast-font-family:"Times New Roman";
    mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br
    clear=all style='page-break-before:always'>
    </span>
    <p class=MsoNormal align=center style='text-align:center'><b><span
    style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rules
    used by</span></b><span style='font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'> </span><span lang=EN-GB
    style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span></p>
    </td>
    <td valign=top style='border-top:solid navy .75pt;border-left:none;
    border-bottom:none;border-right:solid navy .75pt;mso-border-left-alt:solid navy .75pt;
    padding:0in 5.4pt 0in 5.4pt;height:27.9pt'>
    <p class=MsoNormal align=center style='text-align:center'><b><span
    style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    letter-spacing:-.1pt'>Rules used by </span></b><b><span lang=EN-GB
    style='font-family:BrushScrD;letter-spacing:-.1pt;mso-ansi-language:EN-GB'>T</span></b><b><span
    lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman";letter-spacing:-.1pt;mso-ansi-language:EN-GB'> </span></b><b><span
    style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
    letter-spacing:-.1pt'>*<u7:p></u7:p></span></b></p>
    </td>
    <td valign=top style='border-top:solid navy .75pt;border-left:none;
    border-bottom:none;border-right:solid navy .75pt;mso-border-left-alt:solid navy .75pt;
    padding:0in 5.4pt 0in 5.4pt;height:27.9pt'>
    <p class=MsoNormal align=center style='text-align:center'><b><span
    style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Rules
    not used by </span></b><b><span lang=EN-GB style='font-family:BrushScrD;
    mso-ansi-language:EN-GB'>T</span></b><b><span lang=EN-GB style='font-family:
    "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
    EN-GB'> </span></b><b><span style='font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>*</span><u7:p></u7:p></b></p>
    </td>
   </tr>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Sequents</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE &quot;</span><span
    lang=EN-GB style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Sequents</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE &quot;</span><span
    lang=EN-GB style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Sequents</span><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Generalisation<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Primitive<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Primitive<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Cases<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Applications<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Applications<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Patterns<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Generalisation<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Global</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE
    &quot;Global&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Guard<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Cases<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>@p Rules (left and right)<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Y-combinator</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE &quot;</span><span
    lang=EN-GB style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>combinator</span><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Patterns<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Cons Rules (left and right)<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Guard<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Equality Rule</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE
    &quot;Equality Rule&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Global</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE
    &quot;Global&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Conditional Rule</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE
    &quot;Conditional Rule&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Y-combinator</span><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-begin'></span> XE &quot;</span><span
    lang=EN-GB style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>combinator</span><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Abstraction<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>@p Rules (left and right)<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <u7:p></u7:p>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:27.05pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:27.05pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Cons Rules (left and right)<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    <p class=MsoNormal><span style='mso-bidi-font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Equality Rule<u5:p></u5:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:27.05pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <u7:p></u7:p>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:27.05pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:13.55pt'>
    <td valign=top style='border-top:none;border-left:solid navy .75pt;
    border-bottom:none;border-right:solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;
    height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt;font-family:"Microsoft Sans Serif";
    mso-bidi-font-family:"Times New Roman"'>Conditional Rule<u5:p></u5:p></span><span
    style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <u7:p></u7:p>
    <td valign=top style='border:none;border-right:solid navy .75pt;mso-border-left-alt:
    solid navy .75pt;padding:0in 5.4pt 0in 5.4pt;height:13.55pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
   <u7:p></u7:p>
   <tr style='height:4.0pt'>
    <td valign=top style='border:solid navy .75pt;border-top:none;padding:0in 5.4pt 0in 5.4pt;
    height:4.0pt'>
    <p class=MsoNormal><!--[if supportFields]><span style='font-size:12.0pt;
    font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
    style='mso-element:field-begin'></span><span style="mso-spacerun:
    yes">&nbsp;</span>XE &quot;Conditional Rule&quot; \b </span><![endif]--><!--[if supportFields]><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
    style='font-size:12.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
    "Times New Roman"'><u5:p></u5:p></span><span style='font-size:12.0pt'><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <td valign=top style='border-top:none;border-left:none;border-bottom:solid navy .75pt;
    border-right:solid navy .75pt;mso-border-left-alt:solid navy .75pt;
    padding:0in 5.4pt 0in 5.4pt;height:4.0pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
    <u7:p></u7:p>
    <td valign=top style='border-top:none;border-left:none;border-bottom:solid navy .75pt;
    border-right:solid navy .75pt;mso-border-left-alt:solid navy .75pt;
    padding:0in 5.4pt 0in 5.4pt;height:4.0pt'>
    <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u7:p></u7:p><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  </div>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Figure 13.13 The rules used by </span></i><span
  lang=EN-GB style='font-family:BrushScrD'>T </span><i><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>and</span></i><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> </span><span
  lang=EN-GB style='font-family:BrushScrD'>T</span><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>*.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  optimisation of dispensing with the Patterns and Guard Rules is more
  delicate.<span style="mso-spacerun: yes">&nbsp; </span>Recall that in </span><span
  style='font-family:BrushScrD;mso-bidi-font-style:italic'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  the task of typechecking a function begins with a problem of the form (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x<sub>1</sub> &#8230;(</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> x<sub>n</sub><span
  style="mso-spacerun: yes">&nbsp; </span><span style='mso-bidi-font-style:
  italic'>y</span>)) : A<sub>1</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>�</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> &#8230; A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A<sub>n+1</sub>.<span style="mso-spacerun: yes">&nbsp; </span>Each x<sub>i</sub>
  is a variable, and by repeated applications of the Abstractions Rule</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<i style='mso-bidi-font-style:
  normal'>Abstractions Rule</i>&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  we generate a problem x<sub>1</sub> : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>:</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A<sub>n</sub> </span><span style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt;
  </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span><i>y</i> : A<sub>n+1</sub>.<sub>
  </sub>The body <span style='mso-bidi-font-style:italic'>y</span> of the
  former abstraction will consist of a series of cases c<sub>1</sub>, &#8230;, c<sub>m</sub>
  each of which must be proved to be of type A<sub>n+1</sub>.<span
  style="mso-spacerun: yes">&nbsp; </span>That is, our proof obligation breaks
  down into the following series.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>c<sub>1</sub><span
  style="mso-spacerun: yes">&nbsp; </span></span><span style='font-family:Symbol;
  layout-grid-mode:line'>: </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<u7:p></u7:p></span></sub></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>c<sub>m</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>: </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Each
  c<sub>i</sub> is an application composed of an n-place abstraction (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> p<sub>1</sub> &#8230; (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> p<sub>n</sub><span
  style="mso-spacerun: yes">&nbsp; </span><span style='mso-bidi-font-style:
  italic'>z</span>))<span style="mso-spacerun: yes">&nbsp; </span>applied to x<sub>1</sub>
  ,&#8230;, x<sub>n</sub> taking the form (((</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>1</sub> &#8230; (</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>n</sub> <i>z</i>)) x<sub>1</sub>)&#8230; x<sub>n</sub>).<span
  style="mso-spacerun: yes">&nbsp; </span>Each p<sub>i</sub> is a pattern.<span
  style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Thus the proof obligation
  for c<sub>i</sub> is:<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(((</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> p<sub>1</sub> &#8230; (</span><span
  style='font-family:Symbol'>l</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> p<sub>n</sub> <span
  style='mso-bidi-font-style:italic'>z</span>)) x<sub>1</sub>)&#8230; x<sub>n</sub>) </span><span
  style='font-family:Symbol;layout-grid-mode:line'>: </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Repeated
  use of the Applications Rule</span><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span> XE &quot;<i style='mso-bidi-font-style:
  normal'>Applications Rule</i>&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>gives the following proof obligations.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>where
  B<sub>1</sub> &#8230; B<sub>n </sub>are free type variables<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>x<sub>1</sub> : B<sub>1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>x<sub>n</sub> : B<sub>n<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>(</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>1</sub> &#8230; (</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>n</sub><span style="mso-spacerun: yes">&nbsp; </span><i>z</i>)) : B<sub>1</sub>
  </span><span style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  &#8230; B<sub>n</sub> </span><span style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal align=center style='margin-left:.5in;text-align:center'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  proof obligations<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>x<sub>1</sub> : B<sub>1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>x<sub>n</sub> : B<sub>n<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><sub><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></sub></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>are
  trivially solvable by unifying each x<sub>i</sub> : B<sub>i</sub> with the
  assumption x<sub>i</sub> : A<sub>i</sub>. <span style="mso-spacerun:
  yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  final proof obligation is therefore<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>x<sub>1</sub>
  : A<sub>1</sub>,&#8230;, x<sub>n</sub> </span><span style='font-family:Symbol;
  layout-grid-mode:line'>:</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> A<sub>n</sub> </span><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>(</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>1</sub> &#8230; (</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>n</sub><span style="mso-spacerun: yes">&nbsp; </span><i>z</i>)) : A<sub>1</sub>
  </span><span style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  &#8230; A<sub>n</sub> </span><span style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  expressions x<sub>1 </sub>,&#8230;, x<sub>n</sub> do not occur anywhere within the
  conclusion of this sequent.<span style="mso-spacerun: yes">&nbsp;
  </span>Consequently they play no further part in the proof and may be thinned
  away.<span style="mso-spacerun: yes">&nbsp; </span>The proof obligation can now
  be simplified to<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt; </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>(</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>1</sub> &#8230; (</span><span style='font-family:Symbol'>l</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  p<sub>n</sub><span style="mso-spacerun: yes">&nbsp; </span><i>z</i>)) : A<sub>1</sub>
  </span><span style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  &#8230; A<sub>n</sub> </span><span style='font-family:Symbol;layout-grid-mode:line'>�</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>n
  repeated applications of the Patterns Rule gives the following proof
  obligations.<span style="mso-spacerun: yes">&nbsp; </span>Each </span><span
  style='font-family:Symbol'>D</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>i</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> is a series
  of typings of the form v : C, where v is a variable in p<sub>i</sub> and C is
  a fresh</span><!--[if supportFields]><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>fresh</span></b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span><![endif]--><!--[if supportFields]><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span><![endif]--><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp;</span>type variable.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:Symbol'>D</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> &gt;&gt; p<sub>1</sub>
  : A<sub>1</sub> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;&#8230;&#8230;..<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:Symbol'>D</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>n</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> &gt;&gt; p<sub>n
  </sub><span style="mso-spacerun: yes">&nbsp;</span>: A<sub>n</sub> </span><u6:p></u6:p><o:p></o:p></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><u7:p></u7:p><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>p<sub>1</sub>
  : A<sub>1</sub> &#8230;p<sub>n </sub><span style="mso-spacerun: yes">&nbsp;</span>:
  A<sub>n</sub> </span><span style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt;
  </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span><i>z</i> : A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Let
  us pause at this point and observe that the proof process so far is not only
  entirely mechanical, but is guaranteed to succeed merely by virtue of the
  syntactic structure of the language </span><span lang=EN-GB style='font-family:
  BrushScrD;mso-ansi-language:EN-GB'>L</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>. In other words, type failure can only
  occur past this point, and reconsideration of the previous steps is a waste
  of time.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  second point to observe is that the proof obligations now facing us
  correspond precisely to the integrity and correctness checks required by </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>*.<span
  style="mso-spacerun: yes">&nbsp; </span>The integrity checks are contained
  exactly by the proof obligations <u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:Symbol'>D</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>1</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> &gt;&gt; p<sub>1</sub>
  : A<sub>1</sub> <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&#8230;&#8230;&#8230;&#8230;&#8230;..<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:Symbol'>D</span><sub><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>n</span></sub><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> &gt;&gt; p<sub>n
  </sub><span style="mso-spacerun: yes">&nbsp;</span>: A<sub>n</sub> </span><u6:p></u6:p><o:p></o:p></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><u7:p></u7:p><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>while
  the correctness check is contained by the proof obligation<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>p<sub>1</sub>
  : A<sub>1</sub> &#8230;p<sub>n </sub><span style="mso-spacerun: yes">&nbsp;</span>:
  A<sub>n</sub> </span><span style='font-family:Symbol;layout-grid-mode:line'>&gt;&gt;
  </span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style="mso-spacerun: yes">&nbsp;</span><i>z</i> : A<sub>n+1<u7:p></u7:p></sub></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  advantage of </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:
  EN-GB'>T</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>* is that the mechanical and time-wasting steps required
  in </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:
  EN-GB'>T</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>to
  get to this point are eliminated.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><b><u><span
  lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";letter-spacing:
  -.5pt;mso-ansi-language:EN-GB'>13.11 From Type Checking to Automated Deduction<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Qi
  gives the user enormous power to modify the type system.<span
  style="mso-spacerun: yes">&nbsp; </span>With enormous power comes the
  responsibility of saying what you mean. Poorly thought out type rules can
  cause the integrity of the system to fail.<a style='mso-footnote-id:ftn11'
  href="#_ftn11" name="_ftnref11" title=""><span class=MsoFootnoteReference><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[11]<![endif]></span></span></a><span
  class=MsoFootnoteReference>[11][11][11]</span><span style="mso-spacerun:
  yes">&nbsp; </span>Probably the shortest and most destructive type rule that
  can be added to Qi is given below.<u7:p></u7:p></span></p>
  <p class=MsoNormal align=center style='margin-left:.5in;text-align:center'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>____<br>
  <span style="mso-spacerun: yes">&nbsp;</span>X : A;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><br>
  This single rule collapses Qi<i> </i>into an untyped language.<span
  style="mso-spacerun: yes">&nbsp; </span>Everything becomes well-typed.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";color:black;mso-ansi-language:EN-GB'>However we don&#8217;t have
  to search for no-brainers to find rules that will upset the type
  checker.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>The wrong rules
  can cause type checking to go into a loop.<a style='mso-footnote-id:ftn12'
  href="#_ftn12" name="_ftnref12" title=""><span style='mso-special-character:
  footnote'><![if !supportFootnotes]>[12]<![endif]></span></a>[12][12][12] Here
  is an example.<span style="mso-spacerun: yes">&nbsp; </span>A student
  programmer Melvin considers that the list</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";color:black;mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span> XE &quot;list&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";color:black;mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  color:black;mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>[1 a] should be well-typed since all its members inhabit
  the type of things that are either numbers or symbols.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Accordingly he defines a type
  operator or with the following proof properties. <u7:p></u7:p><u5:p></u5:p><u6:p></u6:p><o:p></o:p></span></p>
  <b><u><span lang=EN-GB style='font-size:10.0pt;font-family:"Times New Roman";
  mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-GB;mso-fareast-language:
  EN-US;mso-bidi-language:AR-SA'><br clear=all style='mso-special-character:
  line-break;page-break-before:always'>
  </span></u></b>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : A
  &gt;&gt; P; X : B &gt;&gt; P;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : (A or B)
  &gt;&gt; P;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : A;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : (A or B);<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : B;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : (A or B);<u7:p></u7:p></span></b></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></i></p>
  <p class=MsoBodyText align=center style='margin-left:.5in;text-align:center'><i><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Figure 13.14 A type definition that
  causes problems</span></i><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>.<u6:p></u6:p></span><span
  lang=EN-GB><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><u7:p></u7:p><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>He enters <b>[1 a]</b> to Qi and
  gets <b>[1 a]: (list</b></span><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>list</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>(number or symbol))</span></span></b><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> in return.<span style="mso-spacerun: yes">&nbsp;
  </span>However, when he enters<b> (* 1 a)</b> instead of a type error</span><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>type error</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>, the computer crashes.<span
  style="mso-spacerun: yes">&nbsp; </span>Why?<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>To see why, remember that Qi treats the problem of proving
  that <b>(* 1 a)</b> has a type as equivalent to proving that for some C, <b>(*
  1 a) </b>: C.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Applying the
  second rule to this problem, unifies the polytyp</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span>
  XE &quot;<b style='mso-bidi-font-weight:normal'>polytype</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>e expression (A or B) with C giving <b>(*
  1 a) </b>: A as an output.<span style="mso-spacerun: yes">&nbsp;&nbsp;
  </span>Standardising this apart, we get <b>(* 1 a) </b>: D.<span
  style="mso-spacerun: yes">&nbsp; </span>The same rule can now be applied
  again &#8230;. and again &#8230;. and again <i>ad infinite</i></span><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-style:italic'>
  XE &quot;infinite&quot; </span></span></i><![endif]--><!--[if supportFields]><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-end'></span></span></i><![endif]--><i
  style='mso-bidi-font-style:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-bidi-font-style:italic'>m</span></span></i><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Rules
  like this which can be continually applied to generate an infinite proof
  branch are called <b>expansive</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-element:field-begin'></span><span style='mso-bidi-font-weight:
  bold'> XE &quot;</span>expansive<span style='mso-bidi-font-weight:bold'>&quot;
  </span></span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>rules</span></span></b><span lang=EN-GB style='font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>.<u7:p></u7:p><o:p></o:p></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Qi does include a facility for switching
  from unification over types to simple pattern-matching using mode
  declarations.<span style="mso-spacerun: yes">&nbsp; </span>The following
  definition declares that <b>(A or B)</b> must match to the relevant type by
  using <b>(mode &#8230; -)</b>.<span style="mso-spacerun: yes">&nbsp; </span><b>(mode
  &#8230; +)</b> switches over to full unification.<span style="mso-spacerun:
  yes">&nbsp; </span></span></p>
  <p class=MsoBodyText style='margin-left:.5in'><span lang=EN-GB><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p><b>(datatype or<o:p></o:p></b></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : A
  &gt;&gt; P; X : B &gt;&gt; P;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : (A or B)
  &gt;&gt; P;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : A;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : (mode (A
  or B) -);<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><u><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : B;<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-outline-level:1'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>X : (mode (A
  or B -));<u7:p></u7:p>)</span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>The default is full unification
  over types and pattern-matching on expressions to the left of the colon.<span
  style="mso-spacerun: yes">&nbsp; </span>Modes can be nested and the innermost
  mode takes priority.</span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>However this is not a free
  lunch.<span style="mso-spacerun: yes">&nbsp; </span>We now have to explicitly
  place the type into the proof; so <b>[1 a]</b> will not be proved as being of
  type <b>(list (number or symbol))</b>.<span style="mso-spacerun: yes">&nbsp;
  </span>Instead we have to explicitly ask Qi to prove this by entering the
  typing <b>[1 a] : (list (number or symbol))</b>.<o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>In general there is no easy way
  out of these sorts of problem; to prove conclusions in systems using
  expansive</span><!--[if supportFields]><span lang=EN-GB style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;<b style='mso-bidi-font-weight:normal'>expansive</b>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span><![endif]--><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span>rules often requires judgement and intelligence.<span
  style="mso-spacerun: yes">&nbsp; </span>As we move to the study of these more
  complex systems, so we become involved in <b>automated deduction</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>automated
  deduction</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; \b </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style="mso-spacerun: yes">&nbsp;</span>&#8211; the
  study of how to automate reasoning on the computer. In difficult cases, it is
  no longer reasonable to expect the computer to manage the process of proof
  without some guidance from a person. This guidance may be fully interactive,
  with the human guiding every step of the proof.<span style="mso-spacerun:
  yes">&nbsp; </span>Alternatively, the human may decide to transfer some of
  her expertise into the machine in the form of a reasoning program that is
  more sophisticated than Qi&#8217;s inbuilt procedure.<span style="mso-spacerun:
  yes">&nbsp; </span>The construction of such programs is the theme of the next
  part of this book.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span><b><u><span
  lang=EN-GB style='mso-ansi-language:EN-GB'><br clear=all style='mso-special-character:
  line-break;page-break-before:always'>
  </span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1;tab-stops:113.4pt'><b><u><span lang=EN-GB style='font-size:14.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Exercise
  13________________________________<u7:p></u7:p></span></u></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>1.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Prove using</span><span lang=EN-GB style='font-family:
  BrushScrD;mso-ansi-language:EN-GB'> T</span><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>* that the
  following functions have the following types:<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>a.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>plus</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> of figure
  3.7 has the type number </span><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> (number </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> number). <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>b.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>fibonacchi</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> of figure
  3.8 has the type number </span><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>�</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> number.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>c.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>join</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> of figure
  4.8 has the type </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>list</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>A) </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> ((list A) </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list A))<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>d.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>rev</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> of figure 4.9
  has the type </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>list</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>A) </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list A).<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>e.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>powerset </span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>of figure
  4.13 has the type </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (list</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>list</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>A) </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> (list (list A))<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:68.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -.25in;mso-list:l0 level1 lfo2;tab-stops:list 68.15pt'><![if !supportLists]>f.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><![endif]>f.<span style='font-size:7.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>f.</span><span lang=EN-GB style='font-size:7.0pt;
  mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>fix</span></b><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> of figure
  5.12 has the type </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:Symbol;mso-ansi-language:EN-GB'>&quot;</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>A (A </span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A) </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>� (</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>A </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;
  mso-ansi-language:EN-GB'>�</span><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> A). <span style='mso-tab-count:
  1'>&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p><u5:p></u5:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;</span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>2.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Implement the unification function.<span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>3.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>**Using your answer to 2., implement </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>*.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Your program should load and
  typecheck a <span style='mso-bidi-font-style:italic'>Qi</span> program from a
  text file.<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>4.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>**Using your answer to 2., implement </span><span
  lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Your program should load and
  typecheck a <span style='mso-bidi-font-style:italic'>Qi</span> program from a
  text file.<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'> </span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>5.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>**The type definition of figure 13.14 fails because
  the type-checker gets trapped in an infinite loop. A similar problem arose
  for the Proplog</span><!--[if supportFields]><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'> </span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>XE &quot;</span><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Proplog</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>theorem-prover of chapter 7. The
  Proplog theorem-prover can be cured by designing a check on looping that
  makes the program to break out of the loop.<span style="mso-spacerun:
  yes">&nbsp; </span>Design a similar solution for our type-checker.<span
  style="mso-spacerun: yes">&nbsp; </span>You have to take into account that
  the looping behaviour of the type-checker is more complex than that of
  Proplog.<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'>&nbsp;<u5:p></u5:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>6.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Melvin Micro types in the rules for binary</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>binary</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>from chapter 11 into Qi and then types
  </span><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>[(+ 1 0)] :
  binary </span></b><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>and gets a type error</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>type error</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>.<span
  style="mso-spacerun: yes">&nbsp; </span>He is puzzled because </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>(+ 1 0)</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> is just </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>1</span></b><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> and </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>[1]</span></b><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> is a binary
  number.<span style="mso-spacerun: yes">&nbsp; </span>Explain why Melvin gets
  this error. <span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u5:p></u5:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp;</span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>7.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Melvin continues to experiment.<span
  style="mso-spacerun: yes">&nbsp; </span>He types in the definition of a
  function that removes all the internal [...]s from within a list</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>list</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(define flat<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp; </span>{[[A]] - -&gt; [A]}<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>[ ] -&gt; []<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>[[X | Y] | Z] -&gt; (append (flat
  [X | Y]) (flat Z))<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>[X | Y] -&gt; [X | (flat Y)])<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -.65pt;mso-list:skip'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -.65pt;mso-list:skip'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>and gets another type error</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>type error</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>.<span
  style="mso-spacerun: yes">&nbsp; </span>Why?<span style="mso-spacerun:
  yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -.65pt;mso-list:skip'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
  style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u7:p></u7:p></span><span
  lang=EN-GB style='mso-ansi-language:EN-GB'><span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>8.</span><span
  lang=EN-GB style='font-size:7.0pt;mso-ansi-language:EN-GB'>&nbsp;&nbsp;&nbsp;&nbsp;
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Melvin argues that the definition of complement</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>complement</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>in chapter 11 is too long.<span
  style="mso-spacerun: yes">&nbsp; </span>He redefines it as<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify'><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:50.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(define melvins_complement</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>complement</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:59.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>{binary</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>binary</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>- -&gt; binary}<u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:62.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>[X] -&gt; (if
  (= X 1) [0] [1]) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:62.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>[X | Y] -&gt;
  (if (= X 0) <u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:62.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>[1 | (melvins_complement</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span> </span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>complement</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>Y)] <u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:62.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  .05pt;mso-list:skip'><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun:
  yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span>[0 | (melvins_complement</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b style='mso-bidi-font-weight:
  normal'><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>complement</span></b><b
  style='mso-bidi-font-weight:normal'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-bidi-font-weight:bold'><span style="mso-spacerun:
  yes">&nbsp;</span>Y)])) <u7:p></u7:p></span></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:62.15pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -14.15pt;mso-list:skip'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify'><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>He finds that
  with type checking disabled, this function works on binary</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>binary</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>numbers just like the old complement</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>complement</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>function does. However </span><b><span
  lang=EN-GB style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>melvins_complement</span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> does not
  typecheck.<span style="mso-spacerun: yes">&nbsp; </span>Explain why. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:338.2pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  21.8pt'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;mso-outline-level:
  1'><b><span lang=EN-GB style='font-size:14.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Further Reading<u7:p></u7:p></span></b></p>
  <div style='border-top:solid windowtext 1.5pt;border-left:none;border-bottom:
  solid windowtext 1.5pt;border-right:none;padding:1.0pt 0in 0in 0in'>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>The first
  practical typechecking algorithm is described in <b>Milner</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Milner</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(1975).<span
  style="mso-spacerun: yes">&nbsp; </span>It was incorporated into ML</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>ML</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>and an axiomatisation for a typed
  functional language was described by <b>Cardelli</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Cardelli</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(1984); our system is closely model</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>model</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>led around
  Cardelli&#8217;s axiomatisation.<span style="mso-spacerun: yes">&nbsp;
  </span>Discussions of alternative type systems can be found in <b>Diller</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Diller<span
  style='mso-bidi-font-weight:bold'>&quot; </span></span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(1988), <b>Girard</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Girard</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(1989),<b>
  Odifreddi</b></span><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Odifreddi</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>ed. (1990), <b>Turner</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Turner</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(1991), <b>Thompson</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Thompson</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(1991), <b>Barendregt</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Barendregt</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(1992), <b>Gunter</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Gunter</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>(1992) and <b>Peirce</b></span><!--[if supportFields]><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span></b><b><span style='font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'> XE &quot;</span></b><b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Peirce</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span></b><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(2002). </span><b><span
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>Cerrito</span></b><!--[if supportFields]><b><span
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b><span style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Cerrito</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b><span style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span></span></b><span style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>and&nbsp;
  <b>Kesner</b></span><!--[if supportFields]><b><span style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b><span style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Kesner</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b><span style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-end'></span></span></b><![endif]--><b><span
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span></span></b><span style='font-size:9.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>(1999)
  describe a type system for an extended lambda calculus based on
  pattern-matching. </span><b><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'>Robinson</span></b><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Robinson</span></b><b><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span></b><![endif]--><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&#8217;s 1965
  unification</span><!--[if supportFields]><span lang=EN-GB style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>unification</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>algorithm remains the standard
  approach to performing unification.<span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span><b>Martelli</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Martelli</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-bidi-font-weight:
  bold'><span style="mso-spacerun: yes">&nbsp;</span></span></span></b><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>and <b>Montanari</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Montanari</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(1973) describe a linear time and
  space algorithm for performing unification.<span style="mso-spacerun:
  yes">&nbsp;&nbsp; </span><b>Knight</b></span><!--[if supportFields]><b
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:9.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span></b><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Knight</span></b><b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span></b><![endif]--><!--[if supportFields]><b style='mso-bidi-font-weight:
  normal'><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'><span style='mso-element:field-end'></span></span></b><![endif]--><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>(1989) provides a good overview of the
  uses and ramifications of unification. <u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>&nbsp;<u7:p></u7:p></span><u5:p></u5:p><u6:p></u6:p><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'><u8:rect id="_x0000_s1030" style="position:absolute;left:0;text-align:left;margin-left:-2.85pt;&#13;&#10; margin-top:13.4pt;width:345.95pt;height:17.3pt;z-index:2" stroked="f"><u9:wrap anchorx="page"/></u8:rect><b><span
  lang=EN-GB style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-GB'>Web Sites<u7:p></u7:p></span></b></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span><u5:p></u5:p><u6:p></u6:p><o:p></o:p></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'><u8:rect id="_x0000_s1029" style="position:absolute;left:0;text-align:left;margin-left:6.5pt;&#13;&#10; margin-top:30.25pt;width:336.6pt;height:28.05pt;z-index:1" stroked="f"><u9:wrap anchorx="page"/></u8:rect><span
  lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Nikola
  Bogunovic</span><!--[if supportFields]><span lang=EN-GB style='font-size:
  9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Bogunovic</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  \b </span><![endif]--><!--[if supportFields]><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>&#8220;Avoiding Infinite Loops in Rule-Based
  Systems with Backward Chaining&#8221; is a useful reference; see <span
  style='color:blue'><a href="http://citeseer.nj.nec.com/348918.html">http://citeseer.nj.nec.com/348918.html</a></span>.<u7:p></u7:p><u5:p></u5:p></span></p>
  <p class=MsoNormal style='margin-top:0in;margin-right:-.35pt;margin-bottom:
  0in;margin-left:.5in;margin-bottom:.0001pt;text-align:justify;border:none;
  mso-border-top-alt:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;
  padding:0in;mso-padding-alt:1.0pt 0in 0in 0in'>&nbsp;<u5:p></u5:p></p>
  </div>
  <p><br clear=all style='mso-special-character:line-break'>
  </p>
  <div class=MsoNormal><span style='font-size:12.0pt'>
  <hr size=1 width="33%" align=left>
  </span></div>
  <p class=MsoNormal style='margin-right:6.75pt;text-align:justify'><a
  style='mso-footnote-id:ftn13' href="#_ftn13" name="_ftnref13" title=""><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-special-character:
  footnote'><![if !supportFootnotes]>[13]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[13][13][1]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>If expressions are entered to the top level</span><!--[if supportFields]><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-begin'></span></span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> XE &quot;</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>top level</span><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&quot; </span><![endif]--><!--[if supportFields]><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>, then a type
  error</span><!--[if supportFields]><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>type error</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span lang=EN-GB style='font-size:
  8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp;</span>will be raised when such a proof
  cannot be found.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText style='text-align:justify'><a style='mso-footnote-id:
  ftn14' href="#_ftn14" name="_ftnref14" title=""><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-special-character:
  footnote'><![if !supportFootnotes]>[14]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[14][14][2]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'> </span><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>is guaranteed to terminate in the
  absence of any user-defined types.<span style="mso-spacerun: yes">&nbsp;
  </span>There are type rules that can cause infinite loops (see the final
  section of this chapter). In practice Qi sets a limit on the number of
  inferences employed in any proof (1,000,000 is the default).<span
  style="mso-spacerun: yes">&nbsp; </span>Hence termination always occurs in
  time.<span style="mso-spacerun: yes">&nbsp; </span>However, this maximum can
  be reset by </span><b><span style='font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>maxinferences</span></b><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>, so that it is possible for Qi to
  fail to terminate typechecking within any reasonable period of time (such as
  a year or two!). <span style="mso-spacerun: yes">&nbsp;</span><u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn15' href="#_ftn15"
  name="_ftnref15" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[15]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[15][15][3]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-size:9.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>The encoding in Qi is set as an exercise at the end
  of this chapter.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText style='text-align:justify'><a style='mso-footnote-id:
  ftn16' href="#_ftn16" name="_ftnref16" title=""><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-special-character:
  footnote'><![if !supportFootnotes]>[16]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[16][16][4]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>Other
  expressions which have their own typing rules are do, error, input+ and
  output.<span style="mso-spacerun: yes">&nbsp; </span>However these are
  relatively unimportant and for reasons of space are not discussed here.<span
  style="mso-spacerun: yes">&nbsp;&nbsp; </span>Their representation in Qi can
  be viewed in the file </span><b><span style='font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>type theory
  3.0.qi</span></b><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>,
  which is</span><span style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'> </span><span style='font-size:8.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>loaded
  during installation and which contains the type rules for Qi.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn17' href="#_ftn17"
  name="_ftnref17" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[17]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[17][17][5]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>See Field</span><!--[if supportFields]><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Field</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>and Harrison</span><!--[if supportFields]><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><b style='mso-bidi-font-weight:normal'><span lang=EN-GB
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>Harrison</span></b><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style="mso-spacerun:
  yes">&nbsp;</span>(1988) for an exposition of this treatment of mutual
  recursion</span><!--[if supportFields]><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-begin'></span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  XE &quot;</span><span lang=EN-GB style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>recursion</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>&quot;
  </span><![endif]--><!--[if supportFields]><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'><span style='mso-element:field-end'></span></span><![endif]--><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>.<span style="mso-spacerun:
  yes">&nbsp; </span>Appendix G contains an example of the use of this
  technique to determine if 5 is even &#8211; not for the faint-hearted.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn18' href="#_ftn18"
  name="_ftnref18" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[18]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[18][18][6]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>See appendix
  F. The proof procedure itself can be viewed by the</span><span
  style='font-size:9.0pt;mso-bidi-font-size:10.0pt;font-family:Verdana'> </span><b><span
  style='font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>spy</span></b><span style='font-size:8.0pt;mso-bidi-font-size:
  10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  command, which is used for debugging.<span style="mso-spacerun: yes">&nbsp;
  </span>See appendix H.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn19' href="#_ftn19"
  name="_ftnref19" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[19]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[19][19][7]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>See appendix E.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='margin-right:-.35pt;text-align:justify'><a
  style='mso-footnote-id:ftn20' href="#_ftn20" name="_ftnref20" title=""><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'><span style='mso-special-character:
  footnote'><![if !supportFootnotes]>[20]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[20][20][8]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>The
  improvement in performance is significant; using </span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:BrushScrD;
  mso-ansi-language:EN-GB'>T</span><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman";mso-ansi-language:EN-GB'> </span><span style='font-size:
  8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>to typecheck and compile a 100 line
  program under my 600MHz laptop took 77,453 inferences and 16 seconds.</span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style="mso-spacerun: yes">&nbsp; </span></span><span style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";mso-bidi-font-family:
  "Times New Roman"'>Under </span><span lang=EN-GB style='font-size:8.0pt;
  mso-bidi-font-size:10.0pt;font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>*, the same
  program was checked and compiled in 6.81 seconds using 10,187 inferences.<span
  style="mso-spacerun: yes">&nbsp; </span>In cases where there are type errors,
  </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span lang=EN-GB
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'>* is less
  likely than </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:
  10.0pt;font-family:BrushScrD;mso-ansi-language:EN-GB'>T</span><span
  lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-GB'><span
  style="mso-spacerun: yes">&nbsp; </span>to lose itself in combinatorial
  complexities.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn21' href="#_ftn21"
  name="_ftnref21" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[21]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[21][21][9]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>I.e.; that they both produce the same result for the
  same input.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn22' href="#_ftn22"
  name="_ftnref22" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[22]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[22][22][10]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>A shallow type
  is one where all the universal quantifiers binding the type variables occur
  to the far left of the type.<u7:p></u7:p></span></p>
  <p class=MsoNormal style='text-align:justify'><a style='mso-footnote-id:ftn23'
  href="#_ftn23" name="_ftnref23" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[23]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[23][23][11]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:
  "Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>In this
  respect programming in Qi</span><b><i><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'> </span></i></b><span
  style='font-size:8.0pt;mso-bidi-font-size:10.0pt;font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>is not different from any formal
  methods approach - if the specification is wrong then the proof of the
  correctness of the program is worthless. <u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><a style='mso-footnote-id:ftn24' href="#_ftn24"
  name="_ftnref24" title=""><span class=MsoFootnoteReference><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'><span
  style='mso-special-character:footnote'><![if !supportFootnotes]>[24]<![endif]></span></span></span></a><span
  class=MsoFootnoteReference><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>[24][24][12]</span></span><span
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman"'>
  </span><span lang=EN-GB style='font-size:8.0pt;mso-bidi-font-size:10.0pt;
  font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>Qi provides a tool for tracing proofs of type
  correctness and its use is discussed in appendix H</span><span lang=EN-GB
  style='font-family:"Microsoft Sans Serif";mso-bidi-font-family:"Times New Roman";
  mso-ansi-language:EN-GB'>.<u7:p></u7:p></span></p>
  <p class=MsoFootnoteText><span style='font-family:"Microsoft Sans Serif";
  mso-bidi-font-family:"Times New Roman"'>&nbsp;<u7:p></u7:p></span></p>
  </td>
 </tr>
 <tr>
  <td width="100%" style='width:100.0%;padding:75.0pt 75.0pt 75.0pt 75.0pt'>
  <p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<o:p></o:p></span></p>
  </td>
 </tr>
 <u5:p></u5:p>
</table>

</div>

<p class=MsoNormal><span style='font-size:12.0pt'>&nbsp;<u6:p></u6:p></span></p>

<p><br clear=all style='mso-special-character:line-break'>
</p>


<div class=MsoNormal><span style='font-size:12.0pt'>

<hr size=1 width="33%" align=left>

</span></div>


<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn25'
href="#_ftn25" name="_ftnref25" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn26'
href="#_ftn26" name="_ftnref26" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn27'
href="#_ftn27" name="_ftnref27" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn28'
href="#_ftn28" name="_ftnref28" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn29'
href="#_ftn29" name="_ftnref29" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn30'
href="#_ftn30" name="_ftnref30" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn31'
href="#_ftn31" name="_ftnref31" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn32'
href="#_ftn32" name="_ftnref32" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn33'
href="#_ftn33" name="_ftnref33" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn34'
href="#_ftn34" name="_ftnref34" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn35'
href="#_ftn35" name="_ftnref35" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn36'
href="#_ftn36" name="_ftnref36" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn37'
href="#_ftn37" name="_ftnref37" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn38'
href="#_ftn38" name="_ftnref38" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn39'
href="#_ftn39" name="_ftnref39" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn40'
href="#_ftn40" name="_ftnref40" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn41'
href="#_ftn41" name="_ftnref41" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn42'
href="#_ftn42" name="_ftnref42" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn43'
href="#_ftn43" name="_ftnref43" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn44'
href="#_ftn44" name="_ftnref44" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn45'
href="#_ftn45" name="_ftnref45" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn46'
href="#_ftn46" name="_ftnref46" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn47'
href="#_ftn47" name="_ftnref47" title=""></a></p>

<p class=MsoNormal>&nbsp;<u6:p></u6:p><a style='mso-footnote-id:ftn48'
href="#_ftn48" name="_ftnref48" title=""></a></p>

</div>

<div style='mso-element:footnote-list'><![if !supportFootnotes]><br clear=all>

<hr align=left size=1 width="33%">

<![endif]>

<div style='mso-element:footnote' id=ftn1>

<p class=MsoNormal><a style='mso-footnote-id:ftn1' href="#_ftnref1" name="_ftn1"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn2>

<p class=MsoNormal><a style='mso-footnote-id:ftn2' href="#_ftnref2" name="_ftn2"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn3>

<p class=MsoNormal><a style='mso-footnote-id:ftn3' href="#_ftnref3" name="_ftn3"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn4>

<p class=MsoNormal><a style='mso-footnote-id:ftn4' href="#_ftnref4" name="_ftn4"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn5>

<p class=MsoNormal><a style='mso-footnote-id:ftn5' href="#_ftnref5" name="_ftn5"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn6>

<p class=MsoNormal><a style='mso-footnote-id:ftn6' href="#_ftnref6" name="_ftn6"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn7>

<p class=MsoNormal><a style='mso-footnote-id:ftn7' href="#_ftnref7" name="_ftn7"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn8>

<p class=MsoNormal><a style='mso-footnote-id:ftn8' href="#_ftnref8" name="_ftn8"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn9>

<p class=MsoNormal><a style='mso-footnote-id:ftn9' href="#_ftnref9" name="_ftn9"
title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn10>

<p class=MsoNormal><a style='mso-footnote-id:ftn10' href="#_ftnref10"
name="_ftn10" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn11>

<p class=MsoNormal><a style='mso-footnote-id:ftn11' href="#_ftnref11"
name="_ftn11" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn12>

<p class=MsoNormal><a style='mso-footnote-id:ftn12' href="#_ftnref12"
name="_ftn12" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn13>

<p class=MsoNormal><a style='mso-footnote-id:ftn13' href="#_ftnref13"
name="_ftn13" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn14>

<p class=MsoNormal><a style='mso-footnote-id:ftn14' href="#_ftnref14"
name="_ftn14" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn15>

<p class=MsoNormal><a style='mso-footnote-id:ftn15' href="#_ftnref15"
name="_ftn15" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn16>

<p class=MsoNormal><a style='mso-footnote-id:ftn16' href="#_ftnref16"
name="_ftn16" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn17>

<p class=MsoNormal><a style='mso-footnote-id:ftn17' href="#_ftnref17"
name="_ftn17" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn18>

<p class=MsoNormal><a style='mso-footnote-id:ftn18' href="#_ftnref18"
name="_ftn18" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn19>

<p class=MsoNormal><a style='mso-footnote-id:ftn19' href="#_ftnref19"
name="_ftn19" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn20>

<p class=MsoNormal><a style='mso-footnote-id:ftn20' href="#_ftnref20"
name="_ftn20" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn21>

<p class=MsoNormal><a style='mso-footnote-id:ftn21' href="#_ftnref21"
name="_ftn21" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn22>

<p class=MsoNormal><a style='mso-footnote-id:ftn22' href="#_ftnref22"
name="_ftn22" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn23>

<p class=MsoNormal><a style='mso-footnote-id:ftn23' href="#_ftnref23"
name="_ftn23" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn24>

<p class=MsoNormal><a style='mso-footnote-id:ftn24' href="#_ftnref24"
name="_ftn24" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn25>

<p class=MsoNormal><a style='mso-footnote-id:ftn25' href="#_ftnref25"
name="_ftn25" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn26>

<p class=MsoNormal><a style='mso-footnote-id:ftn26' href="#_ftnref26"
name="_ftn26" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn27>

<p class=MsoNormal><a style='mso-footnote-id:ftn27' href="#_ftnref27"
name="_ftn27" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn28>

<p class=MsoNormal><a style='mso-footnote-id:ftn28' href="#_ftnref28"
name="_ftn28" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn29>

<p class=MsoNormal><a style='mso-footnote-id:ftn29' href="#_ftnref29"
name="_ftn29" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn30>

<p class=MsoNormal><a style='mso-footnote-id:ftn30' href="#_ftnref30"
name="_ftn30" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn31>

<p class=MsoNormal><a style='mso-footnote-id:ftn31' href="#_ftnref31"
name="_ftn31" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn32>

<p class=MsoNormal><a style='mso-footnote-id:ftn32' href="#_ftnref32"
name="_ftn32" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn33>

<p class=MsoNormal><a style='mso-footnote-id:ftn33' href="#_ftnref33"
name="_ftn33" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn34>

<p class=MsoNormal><a style='mso-footnote-id:ftn34' href="#_ftnref34"
name="_ftn34" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn35>

<p class=MsoNormal><a style='mso-footnote-id:ftn35' href="#_ftnref35"
name="_ftn35" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn36>

<p class=MsoNormal><a style='mso-footnote-id:ftn36' href="#_ftnref36"
name="_ftn36" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn37>

<p class=MsoNormal><a style='mso-footnote-id:ftn37' href="#_ftnref37"
name="_ftn37" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn38>

<p class=MsoNormal><a style='mso-footnote-id:ftn38' href="#_ftnref38"
name="_ftn38" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn39>

<p class=MsoNormal><a style='mso-footnote-id:ftn39' href="#_ftnref39"
name="_ftn39" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn40>

<p class=MsoNormal><a style='mso-footnote-id:ftn40' href="#_ftnref40"
name="_ftn40" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn41>

<p class=MsoNormal><a style='mso-footnote-id:ftn41' href="#_ftnref41"
name="_ftn41" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn42>

<p class=MsoNormal><a style='mso-footnote-id:ftn42' href="#_ftnref42"
name="_ftn42" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn43>

<p class=MsoNormal><a style='mso-footnote-id:ftn43' href="#_ftnref43"
name="_ftn43" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn44>

<p class=MsoNormal><a style='mso-footnote-id:ftn44' href="#_ftnref44"
name="_ftn44" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn45>

<p class=MsoNormal><a style='mso-footnote-id:ftn45' href="#_ftnref45"
name="_ftn45" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn46>

<p class=MsoNormal><a style='mso-footnote-id:ftn46' href="#_ftnref46"
name="_ftn46" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn47>

<p class=MsoNormal><a style='mso-footnote-id:ftn47' href="#_ftnref47"
name="_ftn47" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

<div style='mso-element:footnote' id=ftn48>

<p class=MsoNormal><a style='mso-footnote-id:ftn48' href="#_ftnref48"
name="_ftn48" title=""></a><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>

</div>

</div>

</body>

</html>
